This is an automated email from the ASF dual-hosted git repository.
kxiao pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new 0c9d20c17cf [fix](array) fix array_except/union for left const return
only one row result #36776 (#36934)
0c9d20c17cf is described below
commit 0c9d20c17cf79a5683fde41e636d9bac50a7fe37
Author: amory <[email protected]>
AuthorDate: Tue Jul 2 15:36:25 2024 +0800
[fix](array) fix array_except/union for left const return only one row
result #36776 (#36934)
---
be/src/vec/functions/array/function_array_set.h | 7 ++++++-
.../sql_functions/array_functions/test_array_functions.out | 12 ++++++++++++
.../array_functions/test_array_functions.groovy | 3 +++
3 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/be/src/vec/functions/array/function_array_set.h
b/be/src/vec/functions/array/function_array_set.h
index 41bf53f921f..e28835d38ed 100644
--- a/be/src/vec/functions/array/function_array_set.h
+++ b/be/src/vec/functions/array/function_array_set.h
@@ -181,7 +181,12 @@ private:
constexpr auto execute_left_column_first =
Impl::Action::execute_left_column_first;
size_t current = 0;
Impl impl;
- for (size_t row = 0; row < left_data.offsets_ptr->size(); ++row) {
+ size_t row_size = left_data.offsets_ptr->size();
+ if constexpr (LCONST) {
+ // if left param is const column, we should use right data offset
to get truely row_size
+ row_size = right_data.offsets_ptr->size();
+ }
+ for (size_t row = 0; row < row_size; ++row) {
size_t count = 0;
size_t left_off = (*left_data.offsets_ptr)[index_check_const(row,
LCONST) - 1];
size_t left_len = (*left_data.offsets_ptr)[index_check_const(row,
LCONST)] - left_off;
diff --git
a/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions.out
b/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions.out
index 1b60f427058..664ea154982 100644
---
a/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions.out
+++
b/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions.out
@@ -1659,14 +1659,26 @@
10005 [10005, null, null] [null, 3, 10005, 2, 1]
10006 [60002, 60002, 60003, null, 60005] [null, 3, 60002, 60005, 60003,
2, 1]
+-- !select_union_left_const --
+10005 [10005, null, null] [null, 3, 10005, 2, 1]
+10006 [60002, 60002, 60003, null, 60005] [null, 3, 60002, 60005, 60003,
2, 1]
+
-- !select_except --
10005 [10005, null, null] [10005, null]
10006 [60002, 60002, 60003, null, 60005] [60002, 60003, null, 60005]
+-- !select_except_left_const --
+10005 [10005, null, null] [1, 2, 3]
+10006 [60002, 60002, 60003, null, 60005] [1, 2, 3]
+
-- !select_intersect --
10005 [10005, null, null] [null]
10006 [60002, 60002, 60003, null, 60005] [null]
+-- !select_intersect_left_const --
+10005 [10005, null, null] [null]
+10006 [60002, 60002, 60003, null, 60005] [null]
+
-- !select_array_datetimev2_1 --
1 ["2023-01-19 18:11:11.111", "2023-01-19 18:22:22.222", "2023-01-19
18:33:33.333"] ["2023-01-19 18:22:22.222", "2023-01-19 18:33:33.333",
"2023-01-19 18:44:44.444"] ["2023-01-19 18:11:11.111111", "2023-01-19
18:22:22.222222", "2023-01-19 18:33:33.333333"]
diff --git
a/regression-test/suites/query_p0/sql_functions/array_functions/test_array_functions.groovy
b/regression-test/suites/query_p0/sql_functions/array_functions/test_array_functions.groovy
index c043ada07af..f278483e707 100644
---
a/regression-test/suites/query_p0/sql_functions/array_functions/test_array_functions.groovy
+++
b/regression-test/suites/query_p0/sql_functions/array_functions/test_array_functions.groovy
@@ -273,8 +273,11 @@ suite("test_array_functions") {
sql """ insert into ${tableName3} values
(10006,'bbbbb',[60002,60002,60003,null,60005]) """
qt_select_union "select class_id, student_ids,
array_union(student_ids,[1,2,3]) from ${tableName3} order by class_id;"
+ qt_select_union_left_const "select class_id, student_ids,
array_union([1,2,3], student_ids,[1,2,3]) from ${tableName3} order by class_id;"
qt_select_except "select class_id, student_ids,
array_except(student_ids,[1,2,3]) from ${tableName3} order by class_id;"
+ qt_select_except_left_const "select class_id, student_ids,
array_except([1,2,3], student_ids) from ${tableName3} order by class_id;"
qt_select_intersect "select class_id, student_ids,
array_intersect(student_ids,[1,2,3,null]) from ${tableName3} order by class_id;"
+ qt_select_intersect_left_const "select class_id, student_ids,
array_intersect([1,2,3,null], student_ids) from ${tableName3} order by
class_id;"
def tableName4 = "tbl_test_array_datetimev2_functions"
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]