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

yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new 0c51ee26ea1 [fix](function) add time type in conditional-functions 
(#41270) (#41379)
0c51ee26ea1 is described below

commit 0c51ee26ea10081aa51081bb2b47d1fe66818b30
Author: Mryange <59914473+mrya...@users.noreply.github.com>
AuthorDate: Fri Sep 27 17:19:54 2024 +0800

    [fix](function) add time type in conditional-functions (#41270) (#41379)
    
    ## Proposed changes
    https://github.com/apache/doris/pull/41270
    
    <!--Describe your changes.-->
---
 .../nereids/trees/expressions/functions/scalar/Coalesce.java     | 4 ++++
 .../doris/nereids/trees/expressions/functions/scalar/If.java     | 9 ++++++++-
 .../doris/nereids/trees/expressions/functions/scalar/NullIf.java | 4 ++++
 .../doris/nereids/trees/expressions/functions/scalar/Nvl.java    | 8 +++++++-
 regression-test/data/correctness_p0/test_case_when_decimal.out   | 6 ++++++
 .../suites/correctness_p0/test_case_when_decimal.groovy          | 9 +++++++++
 6 files changed, 38 insertions(+), 2 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Coalesce.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Coalesce.java
index f1d122d0179..2ed864ba9a0 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Coalesce.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Coalesce.java
@@ -36,6 +36,8 @@ import org.apache.doris.nereids.types.IntegerType;
 import org.apache.doris.nereids.types.LargeIntType;
 import org.apache.doris.nereids.types.SmallIntType;
 import org.apache.doris.nereids.types.StringType;
+import org.apache.doris.nereids.types.TimeType;
+import org.apache.doris.nereids.types.TimeV2Type;
 import org.apache.doris.nereids.types.TinyIntType;
 import org.apache.doris.nereids.types.VarcharType;
 import org.apache.doris.nereids.util.ExpressionUtils;
@@ -64,6 +66,8 @@ public class Coalesce extends ScalarFunction
             
FunctionSignature.ret(DateTimeType.INSTANCE).varArgs(DateTimeType.INSTANCE),
             
FunctionSignature.ret(DateV2Type.INSTANCE).varArgs(DateV2Type.INSTANCE),
             
FunctionSignature.ret(DateType.INSTANCE).varArgs(DateType.INSTANCE),
+            
FunctionSignature.ret(TimeType.INSTANCE).varArgs(TimeType.INSTANCE),
+            
FunctionSignature.ret(TimeV2Type.INSTANCE).varArgs(TimeV2Type.INSTANCE),
             
FunctionSignature.ret(DecimalV3Type.WILDCARD).varArgs(DecimalV3Type.WILDCARD),
             
FunctionSignature.ret(DecimalV2Type.SYSTEM_DEFAULT).varArgs(DecimalV2Type.SYSTEM_DEFAULT),
             
FunctionSignature.ret(BitmapType.INSTANCE).varArgs(BitmapType.INSTANCE),
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/If.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/If.java
index 4b6f62f6bc8..655649822c8 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/If.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/If.java
@@ -43,6 +43,8 @@ import org.apache.doris.nereids.types.MapType;
 import org.apache.doris.nereids.types.NullType;
 import org.apache.doris.nereids.types.SmallIntType;
 import org.apache.doris.nereids.types.StringType;
+import org.apache.doris.nereids.types.TimeType;
+import org.apache.doris.nereids.types.TimeV2Type;
 import org.apache.doris.nereids.types.TinyIntType;
 import org.apache.doris.nereids.types.VarcharType;
 import org.apache.doris.nereids.types.coercion.AnyDataType;
@@ -84,7 +86,12 @@ public class If extends ScalarFunction
                     .args(BooleanType.INSTANCE, DoubleType.INSTANCE, 
DoubleType.INSTANCE),
             FunctionSignature.ret(DateTimeType.INSTANCE)
                     .args(BooleanType.INSTANCE, DateTimeType.INSTANCE, 
DateTimeType.INSTANCE),
-            
FunctionSignature.ret(DateType.INSTANCE).args(BooleanType.INSTANCE, 
DateType.INSTANCE, DateType.INSTANCE),
+            
FunctionSignature.ret(DateType.INSTANCE).args(BooleanType.INSTANCE, 
DateType.INSTANCE,
+                    DateType.INSTANCE),
+            
FunctionSignature.ret(TimeType.INSTANCE).args(BooleanType.INSTANCE, 
TimeType.INSTANCE,
+                    TimeType.INSTANCE),
+            
FunctionSignature.ret(TimeV2Type.INSTANCE).args(BooleanType.INSTANCE, 
TimeV2Type.INSTANCE,
+                    TimeV2Type.INSTANCE),
             FunctionSignature.ret(DecimalV3Type.WILDCARD)
                     .args(BooleanType.INSTANCE, DecimalV3Type.WILDCARD, 
DecimalV3Type.WILDCARD),
             FunctionSignature.ret(DecimalV2Type.SYSTEM_DEFAULT)
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/NullIf.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/NullIf.java
index 447e60a752f..fe6164dc085 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/NullIf.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/NullIf.java
@@ -37,6 +37,8 @@ import org.apache.doris.nereids.types.IntegerType;
 import org.apache.doris.nereids.types.LargeIntType;
 import org.apache.doris.nereids.types.SmallIntType;
 import org.apache.doris.nereids.types.StringType;
+import org.apache.doris.nereids.types.TimeType;
+import org.apache.doris.nereids.types.TimeV2Type;
 import org.apache.doris.nereids.types.TinyIntType;
 import org.apache.doris.nereids.types.VarcharType;
 
@@ -65,6 +67,8 @@ public class NullIf extends ScalarFunction
             FunctionSignature.ret(DateTimeV2Type.SYSTEM_DEFAULT)
                     .args(DateTimeV2Type.SYSTEM_DEFAULT, 
DateTimeV2Type.SYSTEM_DEFAULT),
             
FunctionSignature.ret(DateV2Type.INSTANCE).args(DateV2Type.INSTANCE, 
DateV2Type.INSTANCE),
+            FunctionSignature.ret(TimeType.INSTANCE).args(TimeType.INSTANCE, 
TimeType.INSTANCE),
+            
FunctionSignature.ret(TimeV2Type.INSTANCE).args(TimeV2Type.INSTANCE, 
TimeV2Type.INSTANCE),
             FunctionSignature.ret(DecimalV2Type.SYSTEM_DEFAULT)
                     .args(DecimalV2Type.SYSTEM_DEFAULT, 
DecimalV2Type.SYSTEM_DEFAULT),
             FunctionSignature.ret(DecimalV3Type.WILDCARD)
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Nvl.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Nvl.java
index e3d0335cbc3..658e05f1148 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Nvl.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Nvl.java
@@ -36,6 +36,8 @@ import org.apache.doris.nereids.types.IntegerType;
 import org.apache.doris.nereids.types.LargeIntType;
 import org.apache.doris.nereids.types.SmallIntType;
 import org.apache.doris.nereids.types.StringType;
+import org.apache.doris.nereids.types.TimeType;
+import org.apache.doris.nereids.types.TimeV2Type;
 import org.apache.doris.nereids.types.TinyIntType;
 import org.apache.doris.nereids.types.VarcharType;
 
@@ -65,7 +67,11 @@ public class Nvl extends ScalarFunction
             FunctionSignature.ret(DateTimeV2Type.SYSTEM_DEFAULT)
                     .args(DateTimeV2Type.SYSTEM_DEFAULT, 
DateTimeV2Type.SYSTEM_DEFAULT),
             FunctionSignature.ret(DateV2Type.INSTANCE)
-                    .args(DateV2Type.INSTANCE, DateV2Type.INSTANCE),
+                            .args(DateV2Type.INSTANCE, DateV2Type.INSTANCE),
+            FunctionSignature.ret(TimeType.INSTANCE)
+                    .args(TimeType.INSTANCE, TimeType.INSTANCE),
+            FunctionSignature.ret(TimeV2Type.INSTANCE)
+                    .args(TimeV2Type.INSTANCE, TimeV2Type.INSTANCE),
             
FunctionSignature.ret(BitmapType.INSTANCE).args(BitmapType.INSTANCE, 
BitmapType.INSTANCE),
             FunctionSignature.ret(VarcharType.SYSTEM_DEFAULT)
                     .args(VarcharType.SYSTEM_DEFAULT, 
VarcharType.SYSTEM_DEFAULT),
diff --git a/regression-test/data/correctness_p0/test_case_when_decimal.out 
b/regression-test/data/correctness_p0/test_case_when_decimal.out
index 1a888306ed3..ba416b026bf 100644
--- a/regression-test/data/correctness_p0/test_case_when_decimal.out
+++ b/regression-test/data/correctness_p0/test_case_when_decimal.out
@@ -8,3 +8,9 @@
 -- !sql3 --
 4.41
 
+-- !sql4 --
+00:01:23       00:01:23        00:01:23        00:01:23
+
+-- !sql5 --
+00:01:23       00:01:23        00:01:23        00:01:23
+
diff --git 
a/regression-test/suites/correctness_p0/test_case_when_decimal.groovy 
b/regression-test/suites/correctness_p0/test_case_when_decimal.groovy
index baf7f52690e..d9afe72624e 100644
--- a/regression-test/suites/correctness_p0/test_case_when_decimal.groovy
+++ b/regression-test/suites/correctness_p0/test_case_when_decimal.groovy
@@ -97,4 +97,13 @@ suite("test_case_when_decimal") {
 
     sql """ DROP TABLE IF EXISTS `decimal_to_double_table1`; """
     sql """ DROP TABLE IF EXISTS `decimal_to_double_table2`; """
+
+
+    qt_sql4 """
+        select ifnull(cast(123 as time) , cast(300 as time)) , 
coalesce(cast(123 as time) , cast(300 as time)) , if(true ,cast(123 as time) , 
cast(300 as time)) , nullif(cast(123 as time) , cast(300 as time));
+    """
+
+    qt_sql5 """
+        select ifnull(cast(123 as time) , cast(300 as time)) , 
coalesce(cast(123 as time) , cast(300 as time)) , if(true ,cast(123 as time) , 
cast(300 as time)) , nullif(cast(123 as time) , cast(300 as time));
+    """
 }


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

Reply via email to