(6 rows)
RESET enable_incremental_sort;
-DROP TABLE btg;
-- Check we don't pick aggregate path key instead of grouping path key
CREATE TABLE group_agg_pk AS SELECT
i % 10 AS x,
SET enable_hashjoin = off;
SET enable_nestloop = off;
explain (COSTS OFF)
-SELECT c1.relname,c1.relpages
-FROM pg_class c1 JOIN pg_class c2 ON (c1.relname=c2.relname AND c1.relpages=c2.relpages)
-GROUP BY c1.reltuples,c1.relpages,c1.relname
-ORDER BY c1.relpages, c1.relname, c1.relpages*c1.relpages;
- QUERY PLAN
----------------------------------------------------------------------------------------------
+SELECT b1.x,b1.w FROM btg b1 JOIN btg b2 ON (b1.z=b2.z AND b1.w=b2.w)
+GROUP BY b1.x,b1.z,b1.w ORDER BY b1.z, b1.w, b1.x*b1.x;
+ QUERY PLAN
+-------------------------------------------------------------------
Incremental Sort
- Sort Key: c1.relpages, c1.relname, ((c1.relpages * c1.relpages))
- Presorted Key: c1.relpages, c1.relname
+ Sort Key: b1.z, b1.w, ((b1.x * b1.x))
+ Presorted Key: b1.z, b1.w
-> Group
- Group Key: c1.relpages, c1.relname, c1.reltuples
+ Group Key: b1.z, b1.w, b1.x
-> Incremental Sort
- Sort Key: c1.relpages, c1.relname, c1.reltuples
- Presorted Key: c1.relpages, c1.relname
+ Sort Key: b1.z, b1.w, b1.x
+ Presorted Key: b1.z, b1.w
-> Merge Join
- Merge Cond: ((c1.relpages = c2.relpages) AND (c1.relname = c2.relname))
+ Merge Cond: ((b1.z = b2.z) AND (b1.w = b2.w))
-> Sort
- Sort Key: c1.relpages, c1.relname
- -> Seq Scan on pg_class c1
+ Sort Key: b1.z, b1.w
+ -> Seq Scan on btg b1
-> Sort
- Sort Key: c2.relpages, c2.relname
- -> Seq Scan on pg_class c2
+ Sort Key: b2.z, b2.w
+ -> Seq Scan on btg b2
(16 rows)
RESET enable_hashjoin;
RESET enable_nestloop;
+DROP TABLE btg;
RESET enable_hashagg;
RESET max_parallel_workers;
RESET max_parallel_workers_per_gather;
SELECT y,x,array_agg(distinct w) FROM btg WHERE y < 0 GROUP BY x,y;
RESET enable_incremental_sort;
-DROP TABLE btg;
-
-- Check we don't pick aggregate path key instead of grouping path key
CREATE TABLE group_agg_pk AS SELECT
i % 10 AS x,
SET enable_hashjoin = off;
SET enable_nestloop = off;
explain (COSTS OFF)
-SELECT c1.relname,c1.relpages
-FROM pg_class c1 JOIN pg_class c2 ON (c1.relname=c2.relname AND c1.relpages=c2.relpages)
-GROUP BY c1.reltuples,c1.relpages,c1.relname
-ORDER BY c1.relpages, c1.relname, c1.relpages*c1.relpages;
+SELECT b1.x,b1.w FROM btg b1 JOIN btg b2 ON (b1.z=b2.z AND b1.w=b2.w)
+GROUP BY b1.x,b1.z,b1.w ORDER BY b1.z, b1.w, b1.x*b1.x;
RESET enable_hashjoin;
RESET enable_nestloop;
+DROP TABLE btg;
RESET enable_hashagg;
RESET max_parallel_workers;
RESET max_parallel_workers_per_gather;