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