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

starocean999 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new d7a6b64a65 [Fix](Planner) fix case function with null cast to array 
null (#22947)
d7a6b64a65 is described below

commit d7a6b64a653f175b97f86af22c20e06de67e9ed6
Author: LiBinfeng <46676950+libinfeng...@users.noreply.github.com>
AuthorDate: Thu Aug 17 16:37:07 2023 +0800

    [Fix](Planner) fix case function with null cast to array null (#22947)
---
 fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java    | 2 +-
 .../sql_functions/case_function/test_case_function_null.out         | 3 +++
 .../cast_function/test_cast_array_functions_by_literal.out          | 3 +++
 .../sql_functions/case_function/test_case_function_null.groovy      | 6 +++++-
 .../cast_function/test_cast_array_functions_by_literal.groovy       | 6 +-----
 5 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java
index 6ceb8e3d84..cb78d78539 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java
@@ -314,7 +314,7 @@ public class CastExpr extends Expr {
         // it is necessary to check if it is castable before creating fn.
         // char type will fail in canCastTo, so for compatibility, only the 
cast of array type is checked here.
         if (type.isArrayType() || childType.isArrayType()) {
-            if (childType.isNull() || !Type.canCastTo(childType, type)) {
+            if (!Type.canCastTo(childType, type)) {
                 throw new AnalysisException("Invalid type cast of " + 
getChild(0).toSql()
                         + " from " + childType + " to " + type);
             }
diff --git 
a/regression-test/data/query_p0/sql_functions/case_function/test_case_function_null.out
 
b/regression-test/data/query_p0/sql_functions/case_function/test_case_function_null.out
index de51eb0306..2d2816c012 100644
--- 
a/regression-test/data/query_p0/sql_functions/case_function/test_case_function_null.out
+++ 
b/regression-test/data/query_p0/sql_functions/case_function/test_case_function_null.out
@@ -16,3 +16,6 @@
 -- !sql_case2 --
 -2
 
+-- !sql_case3 --
+0
+
diff --git 
a/regression-test/data/query_p0/sql_functions/cast_function/test_cast_array_functions_by_literal.out
 
b/regression-test/data/query_p0/sql_functions/cast_function/test_cast_array_functions_by_literal.out
index f2be3a7079..8a8c513bea 100644
--- 
a/regression-test/data/query_p0/sql_functions/cast_function/test_cast_array_functions_by_literal.out
+++ 
b/regression-test/data/query_p0/sql_functions/cast_function/test_cast_array_functions_by_literal.out
@@ -23,3 +23,6 @@
 -- !sql8 --
 \N
 
+-- !sql9 --
+\N
+
diff --git 
a/regression-test/suites/query_p0/sql_functions/case_function/test_case_function_null.groovy
 
b/regression-test/suites/query_p0/sql_functions/case_function/test_case_function_null.groovy
index 63e67a40f0..269a0bf0db 100644
--- 
a/regression-test/suites/query_p0/sql_functions/case_function/test_case_function_null.groovy
+++ 
b/regression-test/suites/query_p0/sql_functions/case_function/test_case_function_null.groovy
@@ -228,4 +228,8 @@ suite("test_case_function_null", "query,p0") {
             END)
         FROM case_null2;
     """
-}
\ No newline at end of file
+
+
+    qt_sql_case3 """SELECT COUNT(CASE (NOT (NOT true))  WHEN (((- 47960023)) 
IS NOT NULL) THEN NULL ELSE NULL END) from case_null1;"""
+
+}
diff --git 
a/regression-test/suites/query_p0/sql_functions/cast_function/test_cast_array_functions_by_literal.groovy
 
b/regression-test/suites/query_p0/sql_functions/cast_function/test_cast_array_functions_by_literal.groovy
index 7f9fb604bc..ae37e308e1 100644
--- 
a/regression-test/suites/query_p0/sql_functions/cast_function/test_cast_array_functions_by_literal.groovy
+++ 
b/regression-test/suites/query_p0/sql_functions/cast_function/test_cast_array_functions_by_literal.groovy
@@ -41,11 +41,7 @@ suite("test_cast_array_functions_by_literal") {
     // empty string is invalid array, return NULL
     qt_sql8 """select cast('' as array<string>)"""
 
-    test {
-        sql "select cast(NULL as array<int>)"
-        // check exception message contains
-        exception "errCode = 2,"
-    }
+    qt_sql9 """select cast(NULL as array<int>)"""
 
     test {
         sql "select cast(1 as array<int>)"


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

Reply via email to