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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]