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