This is an automated email from the ASF dual-hosted git repository.
eldenmoon 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 469886eb4e [FIX](array)fix if function for array() #22553
469886eb4e is described below
commit 469886eb4edf566d96f2deeb892b949a2bc244a1
Author: amory <[email protected]>
AuthorDate: Thu Aug 3 19:40:45 2023 +0800
[FIX](array)fix if function for array() #22553
[FIX](array)fix if function for array() #22553
---
.../java/org/apache/doris/analysis/FunctionCallExpr.java | 3 +++
.../sql_functions/conditional_functions/test_if.out | 13 +++++++++++++
.../sql_functions/conditional_functions/test_if.groovy | 6 +++++-
3 files changed, 21 insertions(+), 1 deletion(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
index 44d196e18e..eff9e06aa9 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
@@ -1707,6 +1707,9 @@ public class FunctionCallExpr extends Expr {
&& args[ix].isDecimalV3OrContainsDecimalV3())) {
// Do not do this cast if types are both decimalv3 with
different precision/scale.
uncheckedCastChild(args[ix], i);
+ } else if (fnName.getFunction().equalsIgnoreCase("if")
+ && argTypes[i].isArrayType() && ((ArrayType)
argTypes[i]).getItemType().isNull()) {
+ uncheckedCastChild(args[ix], i);
}
}
}
diff --git
a/regression-test/data/query_p0/sql_functions/conditional_functions/test_if.out
b/regression-test/data/query_p0/sql_functions/conditional_functions/test_if.out
new file mode 100644
index 0000000000..832f69157d
--- /dev/null
+++
b/regression-test/data/query_p0/sql_functions/conditional_functions/test_if.out
@@ -0,0 +1,13 @@
+-- This file is automatically generated. You should know what you did if you
want to edit this
+-- !select --
+\N
+
+-- !select --
+["1970-01-01", "1970-01-01"]
+
+-- !select --
+["1970-01-01", "1970-01-01"]
+
+-- !select --
+[]
+
diff --git
a/regression-test/suites/query_p0/sql_functions/conditional_functions/test_if.groovy
b/regression-test/suites/query_p0/sql_functions/conditional_functions/test_if.groovy
index c546e7891b..9a99e8bbd9 100644
---
a/regression-test/suites/query_p0/sql_functions/conditional_functions/test_if.groovy
+++
b/regression-test/suites/query_p0/sql_functions/conditional_functions/test_if.groovy
@@ -16,5 +16,9 @@
// under the License.
suite("test_if") {
- sql "select if(id=1,count,hll_empty()) from (select 1 as id, hll_hash(1)
as count) t"
+ qt_select "select if(id=1,count,hll_empty()) from (select 1 as id,
hll_hash(1) as count) t"
+
+ qt_select "select if(job_d is null, array(), job_d) as test from (select
array('1970-01-01', '1970-01-01') as job_d) t"
+ qt_select "select if(job_d is null, array('1970-01-01'), job_d) as test
from (select array('1970-01-01', '1970-01-01') as job_d) t"
+ qt_select "select if(job_d is null, job_d, array()) as test from (select
array('1970-01-01', '1970-01-01') as job_d) t"
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]