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