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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]