This is an automated email from the ASF dual-hosted git repository.

yiguolei 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 532395c6a0 [Bug][Function] core dump on sum(distinct) (#11308)
532395c6a0 is described below

commit 532395c6a005183db19e86bdfdf4f8591453cb86
Author: Pxl <[email protected]>
AuthorDate: Sat Jul 30 10:24:48 2022 +0800

    [Bug][Function] core dump on sum(distinct) (#11308)
    
    * fix align size calculate for distinct combinator
---
 .../aggregate_function_distinct.h                  |   8 +-
 .../test_aggregate_all_functions.out               | 174 +++++++++++++--------
 .../test_aggregate_all_functions.groovy            |   6 +-
 3 files changed, 120 insertions(+), 68 deletions(-)

diff --git a/be/src/vec/aggregate_functions/aggregate_function_distinct.h 
b/be/src/vec/aggregate_functions/aggregate_function_distinct.h
index 820759a7ff..f37f3f3efa 100644
--- a/be/src/vec/aggregate_functions/aggregate_function_distinct.h
+++ b/be/src/vec/aggregate_functions/aggregate_function_distinct.h
@@ -154,7 +154,7 @@ template <typename Data>
 class AggregateFunctionDistinct
         : public IAggregateFunctionDataHelper<Data, 
AggregateFunctionDistinct<Data>> {
 private:
-    static constexpr auto prefix_size = sizeof(Data);
+    size_t prefix_size;
     AggregateFunctionPtr nested_func;
     size_t arguments_num;
 
@@ -171,7 +171,11 @@ public:
             : IAggregateFunctionDataHelper<Data, AggregateFunctionDistinct>(
                       arguments, nested_func_->get_parameters()),
               nested_func(nested_func_),
-              arguments_num(arguments.size()) {}
+              arguments_num(arguments.size()) {
+        size_t nested_size = nested_func->align_of_data();
+        CHECK_GT(nested_size, 0);
+        prefix_size = (sizeof(Data) + nested_size - 1) / nested_size * 
nested_size;
+    }
 
     void add(AggregateDataPtr __restrict place, const IColumn** columns, 
size_t row_num,
              Arena* arena) const override {
diff --git 
a/regression-test/data/query/sql_functions/aggregate_functions/test_aggregate_all_functions.out
 
b/regression-test/data/query/sql_functions/aggregate_functions/test_aggregate_all_functions.out
index bb6a1de556..6c25cf3d2a 100644
--- 
a/regression-test/data/query/sql_functions/aggregate_functions/test_aggregate_all_functions.out
+++ 
b/regression-test/data/query/sql_functions/aggregate_functions/test_aggregate_all_functions.out
@@ -2,165 +2,211 @@
 -- !select1 --
 1
 2
+
 -- !select2 --
-beijing        100
-xian   100
+beijing        100.0
+xian   100.0
+
 -- !select3 --
-beijing        100
-xian   100
+beijing        100.0
+xian   100.0
+
 -- !select4 --
 3
+
 -- !select5 --
 3
+
 -- !select6 --
 beijing        3
 xian   3
+
 -- !select7 --
 beijing        3
 xian   3
+
 -- !select8 --
 beijing        3
 xian   2
+
 -- !select9 --
 beijing, xian, beijing, chengdu, shanghai
+
 -- !select10 --
 beijing xian beijing chengdu shanghai
+
 -- !select11 --
-\\N
+\N
+
 -- !select12 --
 beijing, xian
 beijing, chengdu, shanghai
+
 -- !select13 --
 beijing xian
 beijing chengdu shanghai
+
 -- !select14 --
-\\N
-\\N
+\N
+\N
+
 -- !select15 --
 1      1
 2      1
 4      1
 5      1
 6      1
+
 -- !select16 --
 1      10
 2      441
 3      10
 5      29
 6      101
+
 -- !select17 --
 441
+
 -- !select18 --
 1      10
 2      8
 3      10
 5      29
 6      101
+
 -- !select19 --
 8
+
 -- !select20 --
-1      10
+1      10.0
 2      224.5
-3      10
-5      29
-6      101
+3      10.0
+5      29.0
+6      101.0
+
 -- !select21 --
-1      10
+1      10.0
 2      246.15
-3      10
-5      29
-6      101
+3      10.0
+5      29.0
+6      101.0
+
 -- !select22 --
-1      10
+1      10.0
 2      356.565
-3      10
-5      29
-6      101
+3      10.0
+5      29.0
+6      101.0
+
 -- !select23 --
-1      10
+1      10.0
 2      224.5
-3      10
-5      29
-6      101
+3      10.0
+5      29.0
+6      101.0
+
 -- !select24 --
-1      10
-2      267.80001831054688
-3      10
-5      29
-6      101
+1      10.0
+2      267.8000183105469
+3      10.0
+5      29.0
+6      101.0
+
 -- !select25 --
-1      10
-2      441
-3      10
-5      29
-6      101
+1      10.0
+2      441.0
+3      10.0
+5      29.0
+6      101.0
+
 -- !select26 --
-1      10
+1      10.0
 2      224.5
-3      10
-5      29
-6      101
+3      10.0
+5      29.0
+6      101.0
+
 -- !select27 --
-1      10
-2      267.80001831054688
-3      10
-5      29
-6      101
+1      10.0
+2      267.8000183105469
+3      10.0
+5      29.0
+6      101.0
+
 -- !select28 --
-1      10
-2      441
-3      10
-5      29
-6      101
+1      10.0
+2      441.0
+3      10.0
+5      29.0
+6      101.0
+
 -- !select29 --
-1      0
+1      0.0
 2      216.5
-3      36
+3      36.0
+
 -- !select30 --
-1      0
+1      0.0
 2      216.5
-3      36
+3      36.0
+
 -- !select31 --
-1      0
-2      306.17723625377511
-3      50.911688245431421
+1      0.0
+2      306.1772362537751
+3      50.91168824543142
+
 -- !select32 --
 1      20
 2      449
 3      130
+
 -- !select33 --
 599
+
 -- !select34 --
 1      {"10":2,"13":1}
 2      {"18":2,"441":1}
 3      {"4":1,"29":1}
+
 -- !select35 --
 1      {"10":2,"13":1}
 2      {"18":2,"441":1}
 3      {"4":1,"29":1}
+
 -- !select36 --
 {"18":2,"10":2}
+
 -- !select37 --
-1      0
+1      0.0
 2      93744.5
-3      2592
+3      2592.0
+
 -- !select38 --
-1      0
+1      0.0
 2      93744.5
-3      2592
+3      2592.0
+
 -- !select39 --
-1      0
+1      0.0
 2      46872.25
-3      1296
+3      1296.0
+
 -- !select40 --
-1      0
+1      0.0
 2      46872.25
-3      1296
+3      1296.0
+
 -- !select41 --
-1      0
+1      0.0
 2      46872.25
-3      1296
+3      1296.0
+
 -- !select42 --
 2
+
 -- !select43 --
 2
+
+-- !select44 --
+6      3975    2003    33035710        25819.948       78965.368       
4449.5830001831055
+
diff --git 
a/regression-test/suites/query/sql_functions/aggregate_functions/test_aggregate_all_functions.groovy
 
b/regression-test/suites/query/sql_functions/aggregate_functions/test_aggregate_all_functions.groovy
index 551d2bfcbf..ddf7337e5b 100644
--- 
a/regression-test/suites/query/sql_functions/aggregate_functions/test_aggregate_all_functions.groovy
+++ 
b/regression-test/suites/query/sql_functions/aggregate_functions/test_aggregate_all_functions.groovy
@@ -392,8 +392,8 @@ suite("test_aggregate_all_functions", "query") {
         """
     sql "INSERT INTO ${tableName_19} values(1,10), (2,8), (2,441) ,(1,10) 
,(3,29) ,(3,101)"
 
-    qt_select37 = sql "select id,var_samp(level) from ${tableName_19} group by 
id order by id"
-    qt_select38 = sql "select id,variance_samp(level) from ${tableName_19} 
group by id order by id"
+    qt_select37 "select id,var_samp(level) from ${tableName_19} group by id 
order by id"
+    qt_select38 "select id,variance_samp(level) from ${tableName_19} group by 
id order by id"
 
     sql "DROP TABLE IF EXISTS ${tableName_19}"
     
@@ -460,4 +460,6 @@ suite("test_aggregate_all_functions", "query") {
     qt_select43 "select MIN_BY(id,level) from ${tableName_12}"
        
     sql "DROP TABLE IF EXISTS ${tableName_10}"
+
+    qt_select44 """ select sum(distinct k1), sum(distinct k2), sum(distinct 
k3), sum(distinct cast(k4 as largeint)), sum(distinct k5), sum(distinct k8), 
sum(distinct k9) from test_query_db.test  """
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to