@@ -926,8 +926,8 @@ SELECT a, c, sum(b), avg(c), count(*) FROM pagg_tab_m GROUP BY (a+b)/2, 2, 1 HAV
926
926
927
927
-- Test with multi-level partitioning scheme
928
928
CREATE 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);
931
931
CREATE TABLE pagg_tab_ml_p2_s1 PARTITION OF pagg_tab_ml_p2 FOR VALUES IN ('0000', '0001', '0002');
932
932
CREATE TABLE pagg_tab_ml_p2_s2 PARTITION OF pagg_tab_ml_p2 FOR VALUES IN ('0003');
933
933
-- This level of partitioning has different column positions than the parent
@@ -946,21 +946,19 @@ SET max_parallel_workers_per_gather TO 2;
946
946
-- is not partial agg safe.
947
947
EXPLAIN (COSTS OFF)
948
948
SELECT 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
+ --------------------------------------------------------------------------------------
951
951
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))
953
953
-> Gather
954
954
Workers Planned: 2
955
955
-> Parallel Append
956
956
-> 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)
959
959
-> 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
964
962
-> GroupAggregate
965
963
Group Key: pagg_tab_ml_5.a
966
964
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
970
968
-> Seq Scan on pagg_tab_ml_p3_s1 pagg_tab_ml_5
971
969
-> Seq Scan on pagg_tab_ml_p3_s2 pagg_tab_ml_6
972
970
-> 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)
975
973
-> 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
978
978
(27 rows)
979
979
980
980
SELECT 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
1000
1000
Workers Planned: 2
1001
1001
-> Parallel Append
1002
1002
-> 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)
1005
1005
-> 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
1010
1008
-> GroupAggregate
1011
1009
Group Key: pagg_tab_ml_5.a
1012
1010
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
1016
1014
-> Seq Scan on pagg_tab_ml_p3_s1 pagg_tab_ml_5
1017
1015
-> Seq Scan on pagg_tab_ml_p3_s2 pagg_tab_ml_6
1018
1016
-> 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)
1021
1019
-> 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
1024
1024
(25 rows)
1025
1025
1026
1026
-- 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;
1249
1249
-> Partial HashAggregate
1250
1250
Group Key: pagg_tab_ml.b
1251
1251
-> 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
1255
1252
-> Partial HashAggregate
1256
1253
Group Key: pagg_tab_ml_3.b
1257
1254
-> 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
1258
1258
-> Partial HashAggregate
1259
1259
Group Key: pagg_tab_ml_4.b
1260
1260
-> 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
1287
1287
Group Key: pagg_tab_ml.a, pagg_tab_ml.b, pagg_tab_ml.c
1288
1288
Filter: (avg(pagg_tab_ml.b) > '7'::numeric)
1289
1289
-> 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
1294
1290
-> HashAggregate
1295
1291
Group Key: pagg_tab_ml_3.a, pagg_tab_ml_3.b, pagg_tab_ml_3.c
1296
1292
Filter: (avg(pagg_tab_ml_3.b) > '7'::numeric)
1297
1293
-> 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
1298
1298
-> HashAggregate
1299
1299
Group Key: pagg_tab_ml_4.a, pagg_tab_ml_4.b, pagg_tab_ml_4.c
1300
1300
Filter: (avg(pagg_tab_ml_4.b) > '7'::numeric)
0 commit comments