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]

Reply via email to