You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by xu...@apache.org on 2022/07/18 05:47:22 UTC
[doris] branch master updated: [BugFix](Array)Fix using Array aggregate function caused be coredump (#10649)
This is an automated email from the ASF dual-hosted git repository.
xuyang 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 77ef19dbcd [BugFix](Array)Fix using Array aggregate function caused be coredump (#10649)
77ef19dbcd is described below
commit 77ef19dbcda49212ea53343f7accf615c504fdf4
Author: xy720 <22...@users.noreply.github.com>
AuthorDate: Mon Jul 18 13:47:17 2022 +0800
[BugFix](Array)Fix using Array aggregate function caused be coredump (#10649)
---
be/src/vec/functions/array/function_array_mapped.h | 10 ++++------
.../array_functions/test_array_functions_by_literal.out | 11 +++++++++++
.../array_functions/test_array_functions_by_literal.groovy | 6 ++++++
3 files changed, 21 insertions(+), 6 deletions(-)
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<const typename Impl::column_type>(
- static_cast<const ColumnNullable*>(typed_column.column.get())
- ->get_nested_column_ptr()
- .get());
+ static_cast<const ColumnNullable*>(ptr.get())->get_nested_column_ptr().get());
} else {
- column_array = check_and_get_column<const typename Impl::column_type>(
- typed_column.column.get());
+ column_array = check_and_get_column<const typename Impl::column_type>(ptr.get());
}
const auto* data_type_array =
static_cast<const DataTypeArray*>(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])"
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org