You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by kx...@apache.org on 2023/10/11 16:55:36 UTC
[doris] 19/47: [opt](Nereids) add two args signature to trim family functions (#25169)
This is an automated email from the ASF dual-hosted git repository.
kxiao pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
commit 361acea3e9bb5c2f9440efb90c5c44660f2043e0
Author: morrySnow <10...@users.noreply.github.com>
AuthorDate: Mon Oct 9 20:17:52 2023 +0800
[opt](Nereids) add two args signature to trim family functions (#25169)
---
.../trees/expressions/functions/scalar/Ltrim.java | 20 ++++-
.../trees/expressions/functions/scalar/Rtrim.java | 20 ++++-
.../trees/expressions/functions/scalar/Trim.java | 20 ++++-
.../data/nereids_function_p0/scalar_function/L.out | 58 ++++++++++++++
.../data/nereids_function_p0/scalar_function/R.out | 58 ++++++++++++++
.../data/nereids_function_p0/scalar_function/T.out | 90 ++++++++++++++++++----
.../nereids_function_p0/scalar_function/L.groovy | 4 +
.../nereids_function_p0/scalar_function/R.groovy | 28 +------
.../nereids_function_p0/scalar_function/T.groovy | 4 +
9 files changed, 253 insertions(+), 49 deletions(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Ltrim.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Ltrim.java
index a3c86fe8d1b..86088eed55b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Ltrim.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Ltrim.java
@@ -37,11 +37,18 @@ import java.util.List;
public class Ltrim extends ScalarFunction
implements UnaryExpression, ExplicitlyCastableSignature, PropagateNullable {
- public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
+ private static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
+ FunctionSignature.ret(VarcharType.SYSTEM_DEFAULT)
+ .args(VarcharType.SYSTEM_DEFAULT, VarcharType.SYSTEM_DEFAULT),
+ FunctionSignature.ret(StringType.INSTANCE).args(StringType.INSTANCE, StringType.INSTANCE),
FunctionSignature.ret(VarcharType.SYSTEM_DEFAULT).args(VarcharType.SYSTEM_DEFAULT),
FunctionSignature.ret(StringType.INSTANCE).args(StringType.INSTANCE)
);
+ private Ltrim(List<Expression> args) {
+ super("ltrim", args);
+ }
+
/**
* constructor with 1 argument.
*/
@@ -49,13 +56,20 @@ public class Ltrim extends ScalarFunction
super("ltrim", arg);
}
+ /**
+ * constructor with 2 argument.
+ */
+ public Ltrim(Expression arg0, Expression arg1) {
+ super("ltrim", arg0, arg1);
+ }
+
/**
* withChildren.
*/
@Override
public Ltrim withChildren(List<Expression> children) {
- Preconditions.checkArgument(children.size() == 1);
- return new Ltrim(children.get(0));
+ Preconditions.checkArgument(children.size() == 1 || children.size() == 2);
+ return new Ltrim(children);
}
@Override
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Rtrim.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Rtrim.java
index 904380c33b8..766f408e84d 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Rtrim.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Rtrim.java
@@ -37,11 +37,18 @@ import java.util.List;
public class Rtrim extends ScalarFunction
implements UnaryExpression, ExplicitlyCastableSignature, PropagateNullable {
- public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
+ private static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
+ FunctionSignature.ret(VarcharType.SYSTEM_DEFAULT)
+ .args(VarcharType.SYSTEM_DEFAULT, VarcharType.SYSTEM_DEFAULT),
+ FunctionSignature.ret(StringType.INSTANCE).args(StringType.INSTANCE, StringType.INSTANCE),
FunctionSignature.ret(VarcharType.SYSTEM_DEFAULT).args(VarcharType.SYSTEM_DEFAULT),
FunctionSignature.ret(StringType.INSTANCE).args(StringType.INSTANCE)
);
+ private Rtrim(List<Expression> args) {
+ super("rtrim", args);
+ }
+
/**
* constructor with 1 argument.
*/
@@ -49,13 +56,20 @@ public class Rtrim extends ScalarFunction
super("rtrim", arg);
}
+ /**
+ * constructor with 2 argument.
+ */
+ public Rtrim(Expression arg0, Expression arg1) {
+ super("rtrim", arg0, arg1);
+ }
+
/**
* withChildren.
*/
@Override
public Rtrim withChildren(List<Expression> children) {
- Preconditions.checkArgument(children.size() == 1);
- return new Rtrim(children.get(0));
+ Preconditions.checkArgument(children.size() == 1 || children.size() == 2);
+ return new Rtrim(children);
}
@Override
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Trim.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Trim.java
index 2e43a4d02d8..b0e286fd254 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Trim.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Trim.java
@@ -37,11 +37,18 @@ import java.util.List;
public class Trim extends ScalarFunction
implements UnaryExpression, ExplicitlyCastableSignature, PropagateNullable {
- public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
+ private static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
+ FunctionSignature.ret(VarcharType.SYSTEM_DEFAULT)
+ .args(VarcharType.SYSTEM_DEFAULT, VarcharType.SYSTEM_DEFAULT),
+ FunctionSignature.ret(StringType.INSTANCE).args(StringType.INSTANCE, StringType.INSTANCE),
FunctionSignature.ret(VarcharType.SYSTEM_DEFAULT).args(VarcharType.SYSTEM_DEFAULT),
FunctionSignature.ret(StringType.INSTANCE).args(StringType.INSTANCE)
);
+ private Trim(List<Expression> args) {
+ super("trim", args);
+ }
+
/**
* constructor with 1 argument.
*/
@@ -49,13 +56,20 @@ public class Trim extends ScalarFunction
super("trim", arg);
}
+ /**
+ * constructor with 2 argument.
+ */
+ public Trim(Expression arg0, Expression arg1) {
+ super("trim", arg0, arg1);
+ }
+
/**
* withChildren.
*/
@Override
public Trim withChildren(List<Expression> children) {
- Preconditions.checkArgument(children.size() == 1);
- return new Trim(children.get(0));
+ Preconditions.checkArgument(children.size() == 1 || children.size() == 2);
+ return new Trim(children);
}
@Override
diff --git a/regression-test/data/nereids_function_p0/scalar_function/L.out b/regression-test/data/nereids_function_p0/scalar_function/L.out
index 195173d8f5a..b2d7ee134d0 100644
--- a/regression-test/data/nereids_function_p0/scalar_function/L.out
+++ b/regression-test/data/nereids_function_p0/scalar_function/L.out
@@ -1072,3 +1072,61 @@ string3
string3
string3
+-- !sql_ltrim_Varchar_Varchar --
+null
+char11
+char11
+char11
+char11
+char12
+char12
+char12
+char12
+char13
+char13
+char13
+char13
+
+-- !sql_ltrim_Varchar_Varchar_notnull --
+char11
+char11
+char11
+char11
+char12
+char12
+char12
+char12
+char13
+char13
+char13
+char13
+
+-- !sql_ltrim_String_String --
+null
+ing1
+ing1
+ing1
+ing1
+ing2
+ing2
+ing2
+ing2
+ing3
+ing3
+ing3
+ing3
+
+-- !sql_ltrim_String_String_notnull --
+ing1
+ing1
+ing1
+ing1
+ing2
+ing2
+ing2
+ing2
+ing3
+ing3
+ing3
+ing3
+
diff --git a/regression-test/data/nereids_function_p0/scalar_function/R.out b/regression-test/data/nereids_function_p0/scalar_function/R.out
index 44c73657f5c..34c2514e147 100644
--- a/regression-test/data/nereids_function_p0/scalar_function/R.out
+++ b/regression-test/data/nereids_function_p0/scalar_function/R.out
@@ -1043,3 +1043,61 @@ string3
string3
string3
+-- !sql_rtrim_Varchar_Varchar --
+null
+varchar
+varchar
+varchar
+varchar
+varchar12
+varchar12
+varchar12
+varchar12
+varchar13
+varchar13
+varchar13
+varchar13
+
+-- !sql_rtrim_Varchar_Varchar_notnull --
+varchar
+varchar
+varchar
+varchar
+varchar12
+varchar12
+varchar12
+varchar12
+varchar13
+varchar13
+varchar13
+varchar13
+
+-- !sql_rtrim_String_String --
+null
+string
+string
+string
+string
+string2
+string2
+string2
+string2
+string3
+string3
+string3
+string3
+
+-- !sql_rtrim_String_String_notnull --
+string
+string
+string
+string
+string2
+string2
+string2
+string2
+string3
+string3
+string3
+string3
+
diff --git a/regression-test/data/nereids_function_p0/scalar_function/T.out b/regression-test/data/nereids_function_p0/scalar_function/T.out
index 028d20a7d94..9daa179d738 100644
--- a/regression-test/data/nereids_function_p0/scalar_function/T.out
+++ b/regression-test/data/nereids_function_p0/scalar_function/T.out
@@ -1,32 +1,32 @@
-- This file is automatically generated. You should know what you did if you want to edit this
-- !sql_tan_Double --
\N
-0.10033467208545055
-0.2027100355086725
-0.30933624960962325
+0.10033467208545054
+0.20271003550867248
+0.3093362496096232
0.4227932187381618
0.5463024898437905
0.6841368083416923
-0.8422883804630794
+0.8422883804630793
1.0296385570503641
-1.2601582175503392
-1.5574077246549023
-1.9647596572486523
-2.5721516221263188
+1.260158217550339
+1.557407724654902
+1.9647596572486525
+2.5721516221263183
-- !sql_tan_Double_notnull --
-0.10033467208545055
-0.2027100355086725
-0.30933624960962325
+0.10033467208545054
+0.20271003550867248
+0.3093362496096232
0.4227932187381618
0.5463024898437905
0.6841368083416923
-0.8422883804630794
+0.8422883804630793
1.0296385570503641
-1.2601582175503392
-1.5574077246549023
-1.9647596572486523
-2.5721516221263188
+1.260158217550339
+1.557407724654902
+1.9647596572486525
+2.5721516221263183
-- !sql_timediff_DateTime_DateTime --
\N
@@ -782,6 +782,64 @@ string3
string3
string3
+-- !sql_trim_Varchar_Varchar --
+null
+char11
+char11
+char11
+char11
+char12
+char12
+char12
+char12
+char13
+char13
+char13
+char13
+
+-- !sql_trim_Varchar_Varchar_notnull --
+char11
+char11
+char11
+char11
+char12
+char12
+char12
+char12
+char13
+char13
+char13
+char13
+
+-- !sql_trim_String_String --
+null
+ing1
+ing1
+ing1
+ing1
+ing2
+ing2
+ing2
+ing2
+ing3
+ing3
+ing3
+ing3
+
+-- !sql_trim_String_String_notnull --
+ing1
+ing1
+ing1
+ing1
+ing2
+ing2
+ing2
+ing2
+ing3
+ing3
+ing3
+ing3
+
-- !sql_truncate_Double_Integer --
\N
0.1
diff --git a/regression-test/suites/nereids_function_p0/scalar_function/L.groovy b/regression-test/suites/nereids_function_p0/scalar_function/L.groovy
index 41df5c511a9..2a49844ee17 100644
--- a/regression-test/suites/nereids_function_p0/scalar_function/L.groovy
+++ b/regression-test/suites/nereids_function_p0/scalar_function/L.groovy
@@ -93,4 +93,8 @@ suite("nereids_scalar_fn_L") {
qt_sql_ltrim_Varchar_notnull "select ltrim(kvchrs1) from fn_test_not_nullable order by kvchrs1"
qt_sql_ltrim_String "select ltrim(kstr) from fn_test order by kstr"
qt_sql_ltrim_String_notnull "select ltrim(kstr) from fn_test_not_nullable order by kstr"
+ qt_sql_ltrim_Varchar_Varchar "select ltrim(kvchrs1, 'var') from fn_test order by kvchrs1"
+ qt_sql_ltrim_Varchar_Varchar_notnull "select ltrim(kvchrs1, 'var') from fn_test_not_nullable order by kvchrs1"
+ qt_sql_ltrim_String_String "select ltrim(kstr, 'str') from fn_test order by kstr"
+ qt_sql_ltrim_String_String_notnull "select ltrim(kstr, 'str') from fn_test_not_nullable order by kstr"
}
\ No newline at end of file
diff --git a/regression-test/suites/nereids_function_p0/scalar_function/R.groovy b/regression-test/suites/nereids_function_p0/scalar_function/R.groovy
index b50cbc31e52..597841acdec 100644
--- a/regression-test/suites/nereids_function_p0/scalar_function/R.groovy
+++ b/regression-test/suites/nereids_function_p0/scalar_function/R.groovy
@@ -95,28 +95,8 @@ suite("nereids_scalar_fn_R") {
qt_sql_rtrim_Varchar_notnull "select rtrim(kvchrs1) from fn_test_not_nullable order by kvchrs1"
qt_sql_rtrim_String "select rtrim(kstr) from fn_test order by kstr"
qt_sql_rtrim_String_notnull "select rtrim(kstr) from fn_test_not_nullable order by kstr"
- sql "select running_difference(ktint) from fn_test order by ktint"
- sql "select running_difference(ktint) from fn_test_not_nullable order by ktint"
- sql "select running_difference(ksint) from fn_test order by ksint"
- sql "select running_difference(ksint) from fn_test_not_nullable order by ksint"
- sql "select running_difference(kint) from fn_test order by kint"
- sql "select running_difference(kint) from fn_test_not_nullable order by kint"
- sql "select running_difference(kbint) from fn_test order by kbint"
- sql "select running_difference(kbint) from fn_test_not_nullable order by kbint"
- sql "select running_difference(klint) from fn_test order by klint"
- sql "select running_difference(klint) from fn_test_not_nullable order by klint"
- sql "select running_difference(kfloat) from fn_test order by kfloat"
- sql "select running_difference(kfloat) from fn_test_not_nullable order by kfloat"
- sql "select running_difference(kdbl) from fn_test order by kdbl"
- sql "select running_difference(kdbl) from fn_test_not_nullable order by kdbl"
- sql "select running_difference(kdcmls1) from fn_test order by kdcmls1"
- sql "select running_difference(kdcmls1) from fn_test_not_nullable order by kdcmls1"
- sql "select running_difference(kdt) from fn_test order by kdt"
- // sql "select running_difference(kdt) from fn_test_not_nullable order by kdt"
- sql "select running_difference(kdtv2) from fn_test order by kdtv2"
- sql "select running_difference(kdtv2) from fn_test_not_nullable order by kdtv2"
- sql "select cast(running_difference(kdtm) as string) from fn_test order by kdtm"
- sql "select cast(running_difference(kdtm) as string) from fn_test order by kdtm"
- sql "select cast(running_difference(kdtmv2s1) as string) from fn_test order by kdtmv2s1"
- sql "select cast(running_difference(kdtmv2s1) as string) from fn_test order by kdtmv2s1"
+ qt_sql_rtrim_Varchar_Varchar "select rtrim(kvchrs1, '1') from fn_test order by kvchrs1"
+ qt_sql_rtrim_Varchar_Varchar_notnull "select rtrim(kvchrs1, '1') from fn_test_not_nullable order by kvchrs1"
+ qt_sql_rtrim_String_String "select rtrim(kstr, '1') from fn_test order by kstr"
+ qt_sql_rtrim_String_String_notnull "select rtrim(kstr, '1') from fn_test_not_nullable order by kstr"
}
diff --git a/regression-test/suites/nereids_function_p0/scalar_function/T.groovy b/regression-test/suites/nereids_function_p0/scalar_function/T.groovy
index e47878b4425..638a467236c 100644
--- a/regression-test/suites/nereids_function_p0/scalar_function/T.groovy
+++ b/regression-test/suites/nereids_function_p0/scalar_function/T.groovy
@@ -73,6 +73,10 @@ suite("nereids_scalar_fn_T") {
qt_sql_trim_Varchar_notnull "select trim(kvchrs1) from fn_test_not_nullable order by kvchrs1"
qt_sql_trim_String "select trim(kstr) from fn_test order by kstr"
qt_sql_trim_String_notnull "select trim(kstr) from fn_test_not_nullable order by kstr"
+ qt_sql_trim_Varchar_Varchar "select trim(kvchrs1, 'var') from fn_test order by kvchrs1"
+ qt_sql_trim_Varchar_Varchar_notnull "select trim(kvchrs1, 'var') from fn_test_not_nullable order by kvchrs1"
+ qt_sql_trim_String_String "select trim(kstr, 'str') from fn_test order by kstr"
+ qt_sql_trim_String_String_notnull "select trim(kstr, 'str') from fn_test_not_nullable order by kstr"
qt_sql_truncate_Double_Integer "select truncate(kdbl, 2) from fn_test order by kdbl"
qt_sql_truncate_Double_Integer_notnull "select truncate(kdbl, 2) from fn_test_not_nullable order by kdbl"
qt_sql_truncate_DecimalV3S1_Int "select truncate(kdcmlv3s1, 1) from fn_test order by kdcmlv3s1"
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org