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