@@ -926,8 +926,8 @@ SELECT a, c, sum(b), avg(c), count(*) FROM pagg_tab_m GROUP BY (a+b)/2, 2, 1 HAV
926926
927927-- Test with multi-level partitioning scheme
928928CREATE TABLE pagg_tab_ml (a int, b int, c text) PARTITION BY RANGE(a);
929- CREATE TABLE pagg_tab_ml_p1 PARTITION OF pagg_tab_ml FOR VALUES FROM (0) TO (10 );
930- CREATE TABLE pagg_tab_ml_p2 PARTITION OF pagg_tab_ml FOR VALUES FROM (10 ) TO (20) PARTITION BY LIST (c);
929+ CREATE TABLE pagg_tab_ml_p1 PARTITION OF pagg_tab_ml FOR VALUES FROM (0) TO (12 );
930+ CREATE TABLE pagg_tab_ml_p2 PARTITION OF pagg_tab_ml FOR VALUES FROM (12 ) TO (20) PARTITION BY LIST (c);
931931CREATE TABLE pagg_tab_ml_p2_s1 PARTITION OF pagg_tab_ml_p2 FOR VALUES IN ('0000', '0001', '0002');
932932CREATE TABLE pagg_tab_ml_p2_s2 PARTITION OF pagg_tab_ml_p2 FOR VALUES IN ('0003');
933933-- This level of partitioning has different column positions than the parent
@@ -946,21 +946,19 @@ SET max_parallel_workers_per_gather TO 2;
946946-- is not partial agg safe.
947947EXPLAIN (COSTS OFF)
948948SELECT a, sum(b), array_agg(distinct c), count(*) FROM pagg_tab_ml GROUP BY a HAVING avg(b) < 3 ORDER BY 1, 2, 3;
949- QUERY PLAN
950- --------------------------------------------------------------------------------------------
949+ QUERY PLAN
950+ --------------------------------------------------------------------------------------
951951 Sort
952- Sort Key: pagg_tab_ml_2 .a, (sum(pagg_tab_ml_2 .b)), (array_agg(DISTINCT pagg_tab_ml_2 .c))
952+ Sort Key: pagg_tab_ml .a, (sum(pagg_tab_ml .b)), (array_agg(DISTINCT pagg_tab_ml .c))
953953 -> Gather
954954 Workers Planned: 2
955955 -> Parallel Append
956956 -> GroupAggregate
957- Group Key: pagg_tab_ml_2 .a
958- Filter: (avg(pagg_tab_ml_2 .b) < '3'::numeric)
957+ Group Key: pagg_tab_ml .a
958+ Filter: (avg(pagg_tab_ml .b) < '3'::numeric)
959959 -> Sort
960- Sort Key: pagg_tab_ml_2.a
961- -> Append
962- -> Seq Scan on pagg_tab_ml_p2_s1 pagg_tab_ml_2
963- -> Seq Scan on pagg_tab_ml_p2_s2 pagg_tab_ml_3
960+ Sort Key: pagg_tab_ml.a
961+ -> Seq Scan on pagg_tab_ml_p1 pagg_tab_ml
964962 -> GroupAggregate
965963 Group Key: pagg_tab_ml_5.a
966964 Filter: (avg(pagg_tab_ml_5.b) < '3'::numeric)
@@ -970,11 +968,13 @@ SELECT a, sum(b), array_agg(distinct c), count(*) FROM pagg_tab_ml GROUP BY a HA
970968 -> Seq Scan on pagg_tab_ml_p3_s1 pagg_tab_ml_5
971969 -> Seq Scan on pagg_tab_ml_p3_s2 pagg_tab_ml_6
972970 -> GroupAggregate
973- Group Key: pagg_tab_ml .a
974- Filter: (avg(pagg_tab_ml .b) < '3'::numeric)
971+ Group Key: pagg_tab_ml_2 .a
972+ Filter: (avg(pagg_tab_ml_2 .b) < '3'::numeric)
975973 -> Sort
976- Sort Key: pagg_tab_ml.a
977- -> Seq Scan on pagg_tab_ml_p1 pagg_tab_ml
974+ Sort Key: pagg_tab_ml_2.a
975+ -> Append
976+ -> Seq Scan on pagg_tab_ml_p2_s1 pagg_tab_ml_2
977+ -> Seq Scan on pagg_tab_ml_p2_s2 pagg_tab_ml_3
978978(27 rows)
979979
980980SELECT a, sum(b), array_agg(distinct c), count(*) FROM pagg_tab_ml GROUP BY a HAVING avg(b) < 3 ORDER BY 1, 2, 3;
@@ -1000,13 +1000,11 @@ SELECT a, sum(b), array_agg(distinct c), count(*) FROM pagg_tab_ml GROUP BY a HA
10001000 Workers Planned: 2
10011001 -> Parallel Append
10021002 -> GroupAggregate
1003- Group Key: pagg_tab_ml_2 .a
1004- Filter: (avg(pagg_tab_ml_2 .b) < '3'::numeric)
1003+ Group Key: pagg_tab_ml .a
1004+ Filter: (avg(pagg_tab_ml .b) < '3'::numeric)
10051005 -> Sort
1006- Sort Key: pagg_tab_ml_2.a
1007- -> Append
1008- -> Seq Scan on pagg_tab_ml_p2_s1 pagg_tab_ml_2
1009- -> Seq Scan on pagg_tab_ml_p2_s2 pagg_tab_ml_3
1006+ Sort Key: pagg_tab_ml.a
1007+ -> Seq Scan on pagg_tab_ml_p1 pagg_tab_ml
10101008 -> GroupAggregate
10111009 Group Key: pagg_tab_ml_5.a
10121010 Filter: (avg(pagg_tab_ml_5.b) < '3'::numeric)
@@ -1016,11 +1014,13 @@ SELECT a, sum(b), array_agg(distinct c), count(*) FROM pagg_tab_ml GROUP BY a HA
10161014 -> Seq Scan on pagg_tab_ml_p3_s1 pagg_tab_ml_5
10171015 -> Seq Scan on pagg_tab_ml_p3_s2 pagg_tab_ml_6
10181016 -> GroupAggregate
1019- Group Key: pagg_tab_ml .a
1020- Filter: (avg(pagg_tab_ml .b) < '3'::numeric)
1017+ Group Key: pagg_tab_ml_2 .a
1018+ Filter: (avg(pagg_tab_ml_2 .b) < '3'::numeric)
10211019 -> Sort
1022- Sort Key: pagg_tab_ml.a
1023- -> Seq Scan on pagg_tab_ml_p1 pagg_tab_ml
1020+ Sort Key: pagg_tab_ml_2.a
1021+ -> Append
1022+ -> Seq Scan on pagg_tab_ml_p2_s1 pagg_tab_ml_2
1023+ -> Seq Scan on pagg_tab_ml_p2_s2 pagg_tab_ml_3
10241024(25 rows)
10251025
10261026-- Full aggregation at level 1 as GROUP BY clause matches with PARTITION KEY
@@ -1249,12 +1249,12 @@ SELECT b, sum(a), count(*) FROM pagg_tab_ml GROUP BY b ORDER BY 1, 2, 3;
12491249 -> Partial HashAggregate
12501250 Group Key: pagg_tab_ml.b
12511251 -> Parallel Seq Scan on pagg_tab_ml_p1 pagg_tab_ml
1252- -> Partial HashAggregate
1253- Group Key: pagg_tab_ml_1.b
1254- -> Parallel Seq Scan on pagg_tab_ml_p2_s1 pagg_tab_ml_1
12551252 -> Partial HashAggregate
12561253 Group Key: pagg_tab_ml_3.b
12571254 -> Parallel Seq Scan on pagg_tab_ml_p3_s1 pagg_tab_ml_3
1255+ -> Partial HashAggregate
1256+ Group Key: pagg_tab_ml_1.b
1257+ -> Parallel Seq Scan on pagg_tab_ml_p2_s1 pagg_tab_ml_1
12581258 -> Partial HashAggregate
12591259 Group Key: pagg_tab_ml_4.b
12601260 -> Parallel Seq Scan on pagg_tab_ml_p3_s2 pagg_tab_ml_4
@@ -1287,14 +1287,14 @@ SELECT a, sum(b), count(*) FROM pagg_tab_ml GROUP BY a, b, c HAVING avg(b) > 7 O
12871287 Group Key: pagg_tab_ml.a, pagg_tab_ml.b, pagg_tab_ml.c
12881288 Filter: (avg(pagg_tab_ml.b) > '7'::numeric)
12891289 -> Seq Scan on pagg_tab_ml_p1 pagg_tab_ml
1290- -> HashAggregate
1291- Group Key: pagg_tab_ml_1.a, pagg_tab_ml_1.b, pagg_tab_ml_1.c
1292- Filter: (avg(pagg_tab_ml_1.b) > '7'::numeric)
1293- -> Seq Scan on pagg_tab_ml_p2_s1 pagg_tab_ml_1
12941290 -> HashAggregate
12951291 Group Key: pagg_tab_ml_3.a, pagg_tab_ml_3.b, pagg_tab_ml_3.c
12961292 Filter: (avg(pagg_tab_ml_3.b) > '7'::numeric)
12971293 -> Seq Scan on pagg_tab_ml_p3_s1 pagg_tab_ml_3
1294+ -> HashAggregate
1295+ Group Key: pagg_tab_ml_1.a, pagg_tab_ml_1.b, pagg_tab_ml_1.c
1296+ Filter: (avg(pagg_tab_ml_1.b) > '7'::numeric)
1297+ -> Seq Scan on pagg_tab_ml_p2_s1 pagg_tab_ml_1
12981298 -> HashAggregate
12991299 Group Key: pagg_tab_ml_4.a, pagg_tab_ml_4.b, pagg_tab_ml_4.c
13001300 Filter: (avg(pagg_tab_ml_4.b) > '7'::numeric)
0 commit comments