This is an automated email from the ASF dual-hosted git repository.
yiguolei 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 2d96d19030 [FIX](array-func) fix array() with decimal type (#23117)
2d96d19030 is described below
commit 2d96d19030708e8d17eede05cb43685c613274e7
Author: amory <[email protected]>
AuthorDate: Fri Aug 18 12:12:50 2023 +0800
[FIX](array-func) fix array() with decimal type (#23117)
if we write sql with : select array(1.0,2.0,null, null,2.0)
here will pass arg type with uint8 to be which does not match array() func
sign with deicmal, and make be core. so here should cast from be and make null
tag to cast decimal type
---
.../apache/doris/analysis/FunctionCallExpr.java | 4 --
.../test_array_functions_by_literal.out | 48 ++++++++++++++++++++++
.../test_array_functions_by_literal.groovy | 18 ++++++++
3 files changed, 66 insertions(+), 4 deletions(-)
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 1a3ec4149d..f83c9ce967 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
@@ -1669,10 +1669,6 @@ public class FunctionCallExpr extends Expr {
|| fnName.getFunction().equalsIgnoreCase("hist"))
&& children.get(0).getType().isDecimalV3() &&
args[ix].isDecimalV3()) {
continue;
- } else if (fnName.getFunction().equalsIgnoreCase("array")
- && (children.get(0).getType().isDecimalV3() &&
args[ix].isDecimalV3()
- || children.get(0).getType().isDatetimeV2() &&
args[ix].isDatetimeV2())) {
- continue;
} else if ((fnName.getFunction().equalsIgnoreCase("array_min")
|| fnName.getFunction()
.equalsIgnoreCase("array_max") ||
fnName.getFunction().equalsIgnoreCase("element_at"))
&& ((
diff --git
a/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions_by_literal.out
b/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions_by_literal.out
index 63103fa437..8e69544962 100644
---
a/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions_by_literal.out
+++
b/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions_by_literal.out
@@ -2,6 +2,54 @@
-- !sql --
[1, 1, 2, 2, 2, 2]
+-- !sql_1 --
+[1.0, 2.0, NULL, NULL, 2.0]
+
+-- !sql_1 --
+["a", "2.0", NULL, NULL, "2.0"]
+
+-- !sql_1 --
+[1, 2, NULL, NULL, 2]
+
+-- !sql_2 --
+[NULL, NULL, 1.0, 2.0, 2.0]
+
+-- !sql_3 --
+1.0
+
+-- !sql_4 --
+2.0
+
+-- !sql_5 --
+1.6
+
+-- !sql_6 --
+5.0
+
+-- !sql_7 --
+4.0
+
+-- !sql_8 --
+[1.0, 2.0, NULL]
+
+-- !sql_9 --
+[NULL, 1.0, 2.0]
+
+-- !sql_10 --
+[]
+
+-- !sql_11 --
+[1.0, 2.0, NULL]
+
+-- !sql_14 --
+[2.0, NULL, NULL, 2.0]
+
+-- !sql_15 --
+[1.0, 2.0, NULL, NULL]
+
+-- !sql_16 --
+[1.0, 2.0, NULL, NULL, 2.0, 1.0, 2.0, NULL, NULL, 2.0]
+
-- !sql --
true
diff --git
a/regression-test/suites/query_p0/sql_functions/array_functions/test_array_functions_by_literal.groovy
b/regression-test/suites/query_p0/sql_functions/array_functions/test_array_functions_by_literal.groovy
index d969312431..d541d24470 100644
---
a/regression-test/suites/query_p0/sql_functions/array_functions/test_array_functions_by_literal.groovy
+++
b/regression-test/suites/query_p0/sql_functions/array_functions/test_array_functions_by_literal.groovy
@@ -19,6 +19,24 @@ suite("test_array_functions_by_literal") {
// array_nested function
qt_sql "select a from (select array(1, 1, 2, 2, 2, 2) as a) t"
+ // array with decimal and other types
+ qt_sql_1 """select array(1.0,2.0,null, null,2.0);"""
+ qt_sql_1 """select array('a',2.0,null, null,2.0);"""
+ qt_sql_1 """select array(1,2.0,null, null,2.0);"""
+ qt_sql_2 """select array_sort(array(1.0,2.0,null, null,2.0));"""
+ qt_sql_3 """select array_min(array(1.0,2.0,null, null,2.0));"""
+ qt_sql_4 """select array_max(array(1.0,2.0,null, null,2.0));"""
+ qt_sql_5 """select array_avg(array(1.0,2.0,null, null,2.0));"""
+ qt_sql_6 """select array_sum(array(1.0,2.0,null, null,2.0));"""
+ qt_sql_7 """select array_product(array(1.0,2.0,null, null,2.0));"""
+ qt_sql_8 """select array_distinct(array(1.0,2.0,null, null,2.0));"""
+ qt_sql_9 """select array_intersect(array(1.0,2.0,null, null,2.0),
array(1.0,2.0,null, null,2.0));"""
+ qt_sql_10 """select array_except(array(1.0,2.0,null, null,2.0),
array(1.0,2.0,null, null,2.0));"""
+ qt_sql_11 """select array_union(array(1.0,2.0,null, null,2.0),
array(1.0,2.0,null, null,2.0));"""
+ qt_sql_14 """select array_popfront(array(1.0,2.0,null, null,2.0));"""
+ qt_sql_15 """select array_popback(array(1.0,2.0,null, null,2.0));"""
+ qt_sql_16 """select array_concat(array(1.0,2.0,null, null,2.0),
array(1.0,2.0,null, null,2.0));"""
+
// array_contains function
qt_sql "select array_contains([1,2,3], 1)"
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]