diff --git a/be/src/vec/functions/array/function_array_mapped.h b/be/src/vec/functions/array/function_array_mapped.h index 6a38993fb4..0314d480ea 100644 --- a/be/src/vec/functions/array/function_array_mapped.h +++ b/be/src/vec/functions/array/function_array_mapped.h @@ -50,15 +50,13 @@ public: Status execute_impl(FunctionContext* context, Block& block, const ColumnNumbers& arguments, size_t result, size_t input_rows_count) override { const auto& typed_column = block.get_by_position(arguments[0]); + auto ptr = typed_column.column->convert_to_full_column_if_const(); const typename Impl::column_type* column_array; - if (typed_column.column->is_nullable()) { + if (ptr->is_nullable()) { column_array = check_and_get_column( - static_cast(typed_column.column.get()) - ->get_nested_column_ptr() - .get()); + static_cast(ptr.get())->get_nested_column_ptr().get()); } else { - column_array = check_and_get_column( - typed_column.column.get()); + column_array = check_and_get_column(ptr.get()); } const auto* data_type_array = static_cast(remove_nullable(typed_column.type).get()); diff --git a/regression-test/data/query/sql_functions/array_functions/test_array_functions_by_literal.out b/regression-test/data/query/sql_functions/array_functions/test_array_functions_by_literal.out index 28c69d2f55..0a37764fb7 100644 --- a/regression-test/data/query/sql_functions/array_functions/test_array_functions_by_literal.out +++ b/regression-test/data/query/sql_functions/array_functions/test_array_functions_by_literal.out @@ -98,3 +98,14 @@ false -- !sql -- \N +-- !sql -- +2 + +-- !sql -- +6 + +-- !sql -- +1 + +-- !sql -- +3 diff --git a/regression-test/suites/query/sql_functions/array_functions/test_array_functions_by_literal.groovy b/regression-test/suites/query/sql_functions/array_functions/test_array_functions_by_literal.groovy index c4349fd560..2fbc570e82 100644 --- a/regression-test/suites/query/sql_functions/array_functions/test_array_functions_by_literal.groovy +++ b/regression-test/suites/query/sql_functions/array_functions/test_array_functions_by_literal.groovy @@ -59,4 +59,10 @@ suite("test_array_functions_by_literal", "all") { qt_sql "select [1,2,NULL][3]" qt_sql "select [1,2,NULL][2]" qt_sql "select [][-1]" + + // array_aggregation function + qt_sql "select array_avg([1,2,3])" + qt_sql "select array_sum([1,2,3])" + qt_sql "select array_min([1,2,3])" + qt_sql "select array_max([1,2,3])" }