This is an automated email from the ASF dual-hosted git repository.

morrysnow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 159853ab446 [opt](Nereids) add graph sql function and one arg truncate 
(#29864)
159853ab446 is described below

commit 159853ab4467f3bd3ec6189847a844e539fc7c7e
Author: morrySnow <101034200+morrys...@users.noreply.github.com>
AuthorDate: Fri Jan 12 14:11:47 2024 +0800

    [opt](Nereids) add graph sql function and one arg truncate (#29864)
---
 .../sql-functions/json-functions/json-insert.md    |  2 +-
 .../sql-functions/json-functions/json-insert.md    |  2 +-
 .../sql-functions/json-functions/json-replace.md   |  2 +-
 .../doris/catalog/BuiltinScalarFunctions.java      |  2 ++
 .../functions/scalar/{Truncate.java => G.java}     | 33 ++++++++++------------
 .../expressions/functions/scalar/Truncate.java     | 18 ++++++++++--
 .../expressions/visitor/ScalarFunctionVisitor.java |  5 ++++
 gensrc/script/doris_builtins_functions.py          |  6 ++--
 8 files changed, 43 insertions(+), 27 deletions(-)

diff --git 
a/docs/en/docs/sql-manual/sql-functions/json-functions/json-insert.md 
b/docs/en/docs/sql-manual/sql-functions/json-functions/json-insert.md
index 64ffef30c93..4d6ce999837 100644
--- a/docs/en/docs/sql-manual/sql-functions/json-functions/json-insert.md
+++ b/docs/en/docs/sql-manual/sql-functions/json-functions/json-insert.md
@@ -34,7 +34,7 @@ under the License.
 `VARCHAR json_insert(VARCHAR json_str, VARCHAR path, VARCHAR val[, VARCHAR 
path, VARCHAR val] ...)`
 
 
-`json_set` function inserts data in a JSON and returns the result.Returns NULL 
if `json_str` or `path` is NULL. Otherwise, an error occurs if the `json_str` 
argument is not a valid JSON or any path argument is not a valid path 
expression or contains a * wildcard.
+`json_insert` function inserts data in a JSON and returns the result.Returns 
NULL if `json_str` or `path` is NULL. Otherwise, an error occurs if the 
`json_str` argument is not a valid JSON or any path argument is not a valid 
path expression or contains a * wildcard.
 
 The path-value pairs are evaluated left to right.
 
diff --git 
a/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/json-insert.md 
b/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/json-insert.md
index 52948c1021f..77dd4e9511f 100644
--- a/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/json-insert.md
+++ b/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/json-insert.md
@@ -34,7 +34,7 @@ under the License.
 `VARCHAR json_insert(VARCHAR json_str, VARCHAR path, VARCHAR val[, VARCHAR 
path, VARCHAR val] ...)`
 
 
-`json_set` 函数在 JSON 中插入数据并返回结果。如果 `json_str` 或 `path` 为 NULL,则返回 NULL。否则,如果 
`json_str` 不是有效的 JSON 或任何 `path` 参数不是有效的路径表达式或包含了 * 通配符,则会返回错误。
+`json_insert` 函数在 JSON 中插入数据并返回结果。如果 `json_str` 或 `path` 为 NULL,则返回 NULL。否则,如果 
`json_str` 不是有效的 JSON 或任何 `path` 参数不是有效的路径表达式或包含了 * 通配符,则会返回错误。
 
 路径值对按从左到右的顺序进行评估。
 
diff --git 
a/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/json-replace.md 
b/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/json-replace.md
index 3db308350c3..013c62de872 100644
--- a/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/json-replace.md
+++ b/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/json-replace.md
@@ -34,7 +34,7 @@ under the License.
 `VARCHAR json_replace(VARCHAR json_str, VARCHAR path, VARCHAR val[, VARCHAR 
path, VARCHAR val] ...)`
 
 
-`json_set` 函数在 JSON 中更新数据并返回结果。如果 `json_str` 或 `path` 为 NULL,则返回 NULL。否则,如果 
`json_str` 不是有效的 JSON 或任何 `path` 参数不是有效的路径表达式或包含了 * 通配符,则会返回错误。
+`json_replace` 函数在 JSON 中更新数据并返回结果。如果 `json_str` 或 `path` 为 NULL,则返回 
NULL。否则,如果 `json_str` 不是有效的 JSON 或任何 `path` 参数不是有效的路径表达式或包含了 * 通配符,则会返回错误。
 
 路径值对按从左到右的顺序进行评估。
 
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/catalog/BuiltinScalarFunctions.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/BuiltinScalarFunctions.java
index 9a499cd9f91..c689ab0d772 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/catalog/BuiltinScalarFunctions.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/BuiltinScalarFunctions.java
@@ -168,6 +168,7 @@ import 
org.apache.doris.nereids.trees.expressions.functions.scalar.FromMicroseco
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.FromMillisecond;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.FromSecond;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.FromUnixtime;
+import org.apache.doris.nereids.trees.expressions.functions.scalar.G;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.GetJsonBigInt;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.GetJsonDouble;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.GetJsonInt;
@@ -572,6 +573,7 @@ public class BuiltinScalarFunctions implements 
FunctionHelper {
             scalar(FromBase64.class, "from_base64"),
             scalar(FromDays.class, "from_days"),
             scalar(FromUnixtime.class, "from_unixtime"),
+            scalar(G.class, "g"),
             scalar(GetJsonBigInt.class, "get_json_bigint"),
             scalar(GetJsonDouble.class, "get_json_double"),
             scalar(GetJsonInt.class, "get_json_int"),
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Truncate.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/G.java
similarity index 57%
copy from 
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Truncate.java
copy to 
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/G.java
index beb3a53db6d..ef0c17527fb 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Truncate.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/G.java
@@ -19,14 +19,12 @@ package 
org.apache.doris.nereids.trees.expressions.functions.scalar;
 
 import org.apache.doris.catalog.FunctionSignature;
 import org.apache.doris.nereids.trees.expressions.Expression;
-import 
org.apache.doris.nereids.trees.expressions.functions.ComputePrecisionForRound;
+import 
org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
 import org.apache.doris.nereids.trees.expressions.functions.PropagateNullable;
-import 
org.apache.doris.nereids.trees.expressions.functions.SearchSignatureForRound;
-import org.apache.doris.nereids.trees.expressions.shape.BinaryExpression;
+import org.apache.doris.nereids.trees.expressions.shape.UnaryExpression;
 import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
-import org.apache.doris.nereids.types.DecimalV3Type;
-import org.apache.doris.nereids.types.DoubleType;
-import org.apache.doris.nereids.types.IntegerType;
+import org.apache.doris.nereids.types.BooleanType;
+import org.apache.doris.nereids.types.VarcharType;
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
@@ -34,30 +32,29 @@ import com.google.common.collect.ImmutableList;
 import java.util.List;
 
 /**
- * ScalarFunction 'truncate'. This class is generated by GenerateFunction.
+ * used for accept graph sql
  */
-public class Truncate extends ScalarFunction
-        implements BinaryExpression, SearchSignatureForRound, 
PropagateNullable, ComputePrecisionForRound {
+public class G extends ScalarFunction
+        implements UnaryExpression, ExplicitlyCastableSignature, 
PropagateNullable {
 
     public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
-            
FunctionSignature.ret(DecimalV3Type.WILDCARD).args(DecimalV3Type.WILDCARD, 
IntegerType.INSTANCE),
-            
FunctionSignature.ret(DoubleType.INSTANCE).args(DoubleType.INSTANCE, 
IntegerType.INSTANCE)
+            
FunctionSignature.ret(BooleanType.INSTANCE).args(VarcharType.SYSTEM_DEFAULT)
     );
 
     /**
-     * constructor with 2 arguments.
+     * constructor with 1 argument.
      */
-    public Truncate(Expression arg0, Expression arg1) {
-        super("truncate", arg0, arg1);
+    public G(Expression arg) {
+        super("g", arg);
     }
 
     /**
      * withChildren.
      */
     @Override
-    public Truncate withChildren(List<Expression> children) {
-        Preconditions.checkArgument(children.size() == 2);
-        return new Truncate(children.get(0), children.get(1));
+    public G withChildren(List<Expression> children) {
+        Preconditions.checkArgument(children.size() == 1);
+        return new G(children.get(0));
     }
 
     @Override
@@ -67,6 +64,6 @@ public class Truncate extends ScalarFunction
 
     @Override
     public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
-        return visitor.visitTruncate(this, context);
+        return visitor.visitG(this, context);
     }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Truncate.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Truncate.java
index beb3a53db6d..696bf1a997f 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Truncate.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Truncate.java
@@ -41,9 +41,17 @@ public class Truncate extends ScalarFunction
 
     public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
             
FunctionSignature.ret(DecimalV3Type.WILDCARD).args(DecimalV3Type.WILDCARD, 
IntegerType.INSTANCE),
-            
FunctionSignature.ret(DoubleType.INSTANCE).args(DoubleType.INSTANCE, 
IntegerType.INSTANCE)
+            
FunctionSignature.ret(DoubleType.INSTANCE).args(DoubleType.INSTANCE, 
IntegerType.INSTANCE),
+            
FunctionSignature.ret(DoubleType.INSTANCE).args(DoubleType.INSTANCE)
     );
 
+    /**
+     * constructor with 1 argument.
+     */
+    public Truncate(Expression arg0) {
+        super("truncate", arg0);
+    }
+
     /**
      * constructor with 2 arguments.
      */
@@ -56,8 +64,12 @@ public class Truncate extends ScalarFunction
      */
     @Override
     public Truncate withChildren(List<Expression> children) {
-        Preconditions.checkArgument(children.size() == 2);
-        return new Truncate(children.get(0), children.get(1));
+        Preconditions.checkArgument(children.size() == 1 || children.size() == 
2);
+        if (children.size() == 1) {
+            return new Truncate(children.get(0));
+        } else {
+            return new Truncate(children.get(0), children.get(1));
+        }
     }
 
     @Override
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ScalarFunctionVisitor.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ScalarFunctionVisitor.java
index 4a9dc84bec4..0507e326256 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ScalarFunctionVisitor.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ScalarFunctionVisitor.java
@@ -166,6 +166,7 @@ import 
org.apache.doris.nereids.trees.expressions.functions.scalar.Fpow;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.FromBase64;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.FromDays;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.FromUnixtime;
+import org.apache.doris.nereids.trees.expressions.functions.scalar.G;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.GetJsonBigInt;
 import 
org.apache.doris.nereids.trees.expressions.functions.scalar.GetJsonDouble;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.GetJsonInt;
@@ -1051,6 +1052,10 @@ public interface ScalarFunctionVisitor<R, C> {
         return visitScalarFunction(getJsonString, context);
     }
 
+    default R visitG(G g, C context) {
+        return visitScalarFunction(g, context);
+    }
+
     default R visitGreatest(Greatest greatest, C context) {
         return visitScalarFunction(greatest, context);
     }
diff --git a/gensrc/script/doris_builtins_functions.py 
b/gensrc/script/doris_builtins_functions.py
index cbf5e626412..4fa4df6f7c3 100644
--- a/gensrc/script/doris_builtins_functions.py
+++ b/gensrc/script/doris_builtins_functions.py
@@ -1791,9 +1791,9 @@ visible_functions = {
         [['json_unquote'], 'VARCHAR', ['VARCHAR'], 'ALWAYS_NULLABLE'],
         [['json_extract'], 'VARCHAR', ['VARCHAR', 'VARCHAR', '...'], 
'ALWAYS_NULLABLE'],
         [['json_extract'], 'STRING', ['STRING', 'STRING', '...'], 
'ALWAYS_NULLABLE'],
-        [['json_insert'], 'VARCHAR', ['VARCHAR', 'VARCHAR', '...'], ''],
-        [['json_replace'], 'VARCHAR', ['VARCHAR', 'VARCHAR', '...'], ''],
-        [['json_set'], 'VARCHAR', ['VARCHAR', 'VARCHAR', '...'], '']
+        [['json_insert'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'VARCHAR', '...'], 
''],
+        [['json_replace'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'VARCHAR', 
'...'], ''],
+        [['json_set'], 'VARCHAR', ['VARCHAR', 'VARCHAR', 'VARCHAR', '...'], '']
     ],
 
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to