-- partition key's collation doesn't match that of the GROUP BY column it is
-- matched with.
SET max_parallel_workers_per_gather TO 0;
-SET enable_incremental_sort TO off;
CREATE TABLE pagg_tab3 (a text, c text collate case_insensitive) PARTITION BY LIST(c collate "C");
CREATE TABLE pagg_tab3_p1 PARTITION OF pagg_tab3 FOR VALUES IN ('a', 'b');
CREATE TABLE pagg_tab3_p2 PARTITION OF pagg_tab3 FOR VALUES IN ('B', 'A');
SET enable_partitionwise_aggregate TO false;
EXPLAIN (COSTS OFF)
SELECT upper(c collate case_insensitive), count(c) FROM pagg_tab3 GROUP BY c collate case_insensitive ORDER BY 1;
- QUERY PLAN
------------------------------------------------------------
+ QUERY PLAN
+--------------------------------------------------------------
Sort
- Sort Key: (upper(pagg_tab3.c)) COLLATE case_insensitive
+ Sort Key: (upper(pagg_tab3_p2.c)) COLLATE case_insensitive
-> HashAggregate
- Group Key: pagg_tab3.c
+ Group Key: pagg_tab3_p2.c
-> Append
- -> Seq Scan on pagg_tab3_p2 pagg_tab3_1
- -> Seq Scan on pagg_tab3_p1 pagg_tab3_2
+ -> Seq Scan on pagg_tab3_p2
+ -> Seq Scan on pagg_tab3_p1
(7 rows)
SELECT upper(c collate case_insensitive), count(c) FROM pagg_tab3 GROUP BY c collate case_insensitive ORDER BY 1;
QUERY PLAN
--------------------------------------------------------------
Sort
- Sort Key: (upper(pagg_tab3.c)) COLLATE case_insensitive
+ Sort Key: (upper(pagg_tab3_p2.c)) COLLATE case_insensitive
-> Finalize HashAggregate
- Group Key: pagg_tab3.c
+ Group Key: pagg_tab3_p2.c
-> Append
-> Partial HashAggregate
- Group Key: pagg_tab3.c
- -> Seq Scan on pagg_tab3_p2 pagg_tab3
+ Group Key: pagg_tab3_p2.c
+ -> Seq Scan on pagg_tab3_p2
-> Partial HashAggregate
- Group Key: pagg_tab3_1.c
- -> Seq Scan on pagg_tab3_p1 pagg_tab3_1
+ Group Key: pagg_tab3_p1.c
+ -> Seq Scan on pagg_tab3_p1
(11 rows)
SELECT upper(c collate case_insensitive), count(c) FROM pagg_tab3 GROUP BY c collate case_insensitive ORDER BY 1;
-- collation to be the same as that of the partition key.
EXPLAIN (COSTS OFF)
SELECT c collate "C", count(c) FROM pagg_tab3 GROUP BY c collate "C" ORDER BY 1;
- QUERY PLAN
---------------------------------------------------------
+ QUERY PLAN
+--------------------------------------------------
Sort
- Sort Key: ((pagg_tab3.c)::text) COLLATE "C"
+ Sort Key: ((pagg_tab3_p2.c)::text) COLLATE "C"
-> Append
-> HashAggregate
- Group Key: (pagg_tab3.c)::text
- -> Seq Scan on pagg_tab3_p2 pagg_tab3
+ Group Key: (pagg_tab3_p2.c)::text
+ -> Seq Scan on pagg_tab3_p2
-> HashAggregate
- Group Key: (pagg_tab3_1.c)::text
- -> Seq Scan on pagg_tab3_p1 pagg_tab3_1
+ Group Key: (pagg_tab3_p1.c)::text
+ -> Seq Scan on pagg_tab3_p1
(9 rows)
SELECT c collate "C", count(c) FROM pagg_tab3 GROUP BY c collate "C" ORDER BY 1;
-> Hash Join
Hash Cond: (t1.c = t2.c)
-> Append
- -> Seq Scan on pagg_tab3_p2 t1_1
- -> Seq Scan on pagg_tab3_p1 t1_2
+ -> Seq Scan on pagg_tab3_p2 t1
+ -> Seq Scan on pagg_tab3_p1 t1_1
-> Hash
-> Append
- -> Seq Scan on pagg_tab3_p2 t2_1
- -> Seq Scan on pagg_tab3_p1 t2_2
+ -> Seq Scan on pagg_tab3_p2 t2
+ -> Seq Scan on pagg_tab3_p1 t2_1
(13 rows)
SELECT t1.c, count(t2.c) FROM pagg_tab3 t1 JOIN pagg_tab3 t2 ON t1.c = t2.c GROUP BY 1 ORDER BY t1.c COLLATE "C";
-> Hash Join
Hash Cond: (t1.c = t2.c)
-> Append
- -> Seq Scan on pagg_tab3_p2 t1_1
- -> Seq Scan on pagg_tab3_p1 t1_2
+ -> Seq Scan on pagg_tab3_p2 t1
+ -> Seq Scan on pagg_tab3_p1 t1_1
-> Hash
-> Append
- -> Seq Scan on pagg_tab3_p2 t2_1
- -> Seq Scan on pagg_tab3_p1 t2_2
+ -> Seq Scan on pagg_tab3_p2 t2
+ -> Seq Scan on pagg_tab3_p1 t2_1
(13 rows)
SELECT t1.c, count(t2.c) FROM pagg_tab3 t1 JOIN pagg_tab3 t2 ON t1.c = t2.c GROUP BY 1 ORDER BY t1.c COLLATE "C";
-> Hash Join
Hash Cond: ((t1.c)::text = (t2.c)::text)
-> Append
- -> Seq Scan on pagg_tab3_p2 t1_1
- -> Seq Scan on pagg_tab3_p1 t1_2
+ -> Seq Scan on pagg_tab3_p2 t1
+ -> Seq Scan on pagg_tab3_p1 t1_1
-> Hash
-> Append
- -> Seq Scan on pagg_tab3_p2 t2_1
- -> Seq Scan on pagg_tab3_p1 t2_2
+ -> Seq Scan on pagg_tab3_p2 t2
+ -> Seq Scan on pagg_tab3_p1 t2_1
(13 rows)
SELECT t1.c COLLATE "C", count(t2.c) FROM pagg_tab3 t1 JOIN pagg_tab3 t2 ON t1.c = t2.c COLLATE "C" GROUP BY t1.c COLLATE "C" ORDER BY t1.c COLLATE "C";
DROP TABLE pagg_tab3;
RESET enable_partitionwise_aggregate;
RESET max_parallel_workers_per_gather;
-RESET enable_incremental_sort;
-- cleanup
RESET search_path;
SET client_min_messages TO warning;