Skip to content

Commit

Permalink
[Fix](Planner) fix case function with null cast to array null (#22947)
Browse files Browse the repository at this point in the history
  • Loading branch information
LiBinfeng-01 authored Aug 17, 2023
1 parent b252c49 commit d7a6b64
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,7 @@ public void analyze() throws AnalysisException {
// 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);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,6 @@
-- !sql_case2 --
-2

-- !sql_case3 --
0

Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,6 @@
-- !sql8 --
\N

-- !sql9 --
\N

Original file line number Diff line number Diff line change
Expand Up @@ -228,4 +228,8 @@ suite("test_case_function_null", "query,p0") {
END)
FROM case_null2;
"""
}


qt_sql_case3 """SELECT COUNT(CASE (NOT (NOT true)) WHEN (((- 47960023)) IS NOT NULL) THEN NULL ELSE NULL END) from case_null1;"""

}
Original file line number Diff line number Diff line change
Expand Up @@ -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>)"
Expand Down

0 comments on commit d7a6b64

Please sign in to comment.