Skip to content

Commit f6c2543

Browse files
[BugFix] Fix array_map crash when capture const array columns (backport #61309) (#61311)
Signed-off-by: stdpain <[email protected]> Co-authored-by: stdpain <[email protected]>
1 parent 1514794 commit f6c2543

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

be/src/exprs/array_map_expr.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ StatusOr<ColumnPtr> ArrayMapExpr::evaluate_lambda_expr(ExprContext* context, Chu
181181
if constexpr (independent_lambda_expr) {
182182
cur_chunk->append_column(captured_column, slot_id);
183183
} else {
184-
if (captured_column->is_array()) {
184+
if (!captured_column->is_constant() && captured_column->is_array()) {
185185
auto view_column = ArrayViewColumn::from_array_column(captured_column);
186186
ASSIGN_OR_RETURN(auto replicated_view_column, view_column->replicate(aligned_offsets->get_data()));
187187
cur_chunk->append_column(replicated_view_column, slot_id);

test/sql/test_array_fn/R/test_array_map_2

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,4 +219,23 @@ set @arr=array_generate(1,10000);
219219
select /*+ SET_VAR(query_mem_limit=104857600)*/array_sum(array_map(x->array_contains(@arr,x), array_generate(1,100000)));
220220
-- result:
221221
10000
222+
-- !result
223+
CREATE TABLE `array_map_x` (
224+
`id` tinyint(4) NOT NULL COMMENT "",
225+
`arr_str` array<varchar(65533)> NULL COMMENT "",
226+
`arr_largeint` array<largeint(40)> NULL COMMENT ""
227+
) ENGINE=OLAP
228+
DUPLICATE KEY(`id`)
229+
DISTRIBUTED BY RANDOM
230+
PROPERTIES (
231+
"replication_num" = "1"
232+
);
233+
-- result:
234+
-- !result
235+
insert into array_map_x values (1, array_repeat("abcdefghasdasdasirnqwrq", 2), array_repeat(100, 2));
236+
-- result:
237+
-- !result
238+
select cast(if (1 > rand(), "[]", "") as array<string>) l , array_map((x)-> (concat(x,l)), arr_str) from array_map_x;
239+
-- result:
240+
[] [["abcdefghasdasdasirnqwrq"],["abcdefghasdasdasirnqwrq"]]
222241
-- !result

test/sql/test_array_fn/T/test_array_map_2

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,16 @@ select array_map(arg0 -> array_map(arg1 -> array_map(arg2 -> array_map(arg3 -> a
7474

7575
set @arr=array_generate(1,10000);
7676
select /*+ SET_VAR(query_mem_limit=104857600)*/array_sum(array_map(x->array_contains(@arr,x), array_generate(1,100000)));
77+
78+
CREATE TABLE `array_map_x` (
79+
`id` tinyint(4) NOT NULL COMMENT "",
80+
`arr_str` array<varchar(65533)> NULL COMMENT "",
81+
`arr_largeint` array<largeint(40)> NULL COMMENT ""
82+
) ENGINE=OLAP
83+
DUPLICATE KEY(`id`)
84+
DISTRIBUTED BY RANDOM
85+
PROPERTIES (
86+
"replication_num" = "1"
87+
);
88+
insert into array_map_x values (1, array_repeat("abcdefghasdasdasirnqwrq", 2), array_repeat(100, 2));
89+
select cast(if (1 > rand(), "[]", "") as array<string>) l , array_map((x)-> (concat(x,l)), arr_str) from array_map_x;

0 commit comments

Comments
 (0)