From d9f6e51884e8f6f34c268b50eb4cd346556ea806 Mon Sep 17 00:00:00 2001 From: starocean999 <40539150+starocean999@users.noreply.github.com> Date: Thu, 23 Nov 2023 18:41:08 +0800 Subject: [PATCH] [fix](planner)output slot should be materialized as intermediate slot in agg node (#27282) --- .../apache/doris/analysis/AggregateInfo.java | 1 + .../correctness_p0/test_agg_materialize.out | 4 ++ .../test_agg_materialize.groovy | 69 +++++++++++++++++++ 3 files changed, 74 insertions(+) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/AggregateInfo.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/AggregateInfo.java index 87b3653a19..25851f4b02 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AggregateInfo.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AggregateInfo.java @@ -911,6 +911,7 @@ public final class AggregateInfo extends AggregateInfoBase { continue; } + slotDesc.setIsMaterialized(true); intermediateSlotDesc.setIsMaterialized(true); exprs.add(functionCallExpr); materializedSlots.add(i); diff --git a/regression-test/data/correctness_p0/test_agg_materialize.out b/regression-test/data/correctness_p0/test_agg_materialize.out index 1969d63486..26c36a0045 100644 --- a/regression-test/data/correctness_p0/test_agg_materialize.out +++ b/regression-test/data/correctness_p0/test_agg_materialize.out @@ -2,3 +2,7 @@ -- !select -- 3 +-- !select2 -- +1 +qycs + diff --git a/regression-test/suites/correctness_p0/test_agg_materialize.groovy b/regression-test/suites/correctness_p0/test_agg_materialize.groovy index 7911231ed4..3f79013ea0 100644 --- a/regression-test/suites/correctness_p0/test_agg_materialize.groovy +++ b/regression-test/suites/correctness_p0/test_agg_materialize.groovy @@ -31,4 +31,73 @@ suite("test_agg_materialize") { from tb1 where e1 = 1)tttt ; """ + sql """drop table if exists c5749_bug_t;""" + sql """CREATE TABLE `c5749_bug_t` ( + `org_code` varchar(255) NULL , + `cash_amt` decimal(27, 9) NULL , + + ) ENGINE=OLAP + DUPLICATE KEY(`org_code`) + DISTRIBUTED BY HASH(`org_code`) BUCKETS AUTO + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1", + "in_memory" = "false", + "storage_format" = "V2", + "disable_auto_compaction" = "false" + );""" + sql """insert into c5749_bug_t values('1',1), ('1',2);""" + qt_select2 """with SPJ AS ( + WITH TOTAL AS ( + SELECT + t1.org_code, + round(ifnull(sum(t1.qty), 0) / 10000, 2) qty + FROM + ( + SELECT + parentOrg.org_code, + SUM(parentOrg.cash_amt) qty + FROM + c5749_bug_t parentOrg + GROUP BY + parentOrg.org_code + UNION + ALL + SELECT + parentOrg.org_code, + SUM(parentOrg.cash_amt) qty + FROM + c5749_bug_t parentOrg + GROUP BY + parentOrg.org_code + ) t1 + GROUP BY + t1.org_code + ), + AGG AS ( + SELECT + TOTAL.org_code, + TOTAL.qty totalQty + FROM + TOTAL + UNION + ALL + SELECT + 'qycs' org_code, + SUM(TOTAL.qty) totalQty + FROM + TOTAL + ) + SELECT + AGG.org_code, + AGG.totalQty AS totalQty + FROM + AGG + ) + SELECT + SPJ.org_code + FROM + SPJ + ORDER BY SPJ.org_code; + """ + sql """drop table if exists c5749_bug_t;""" }