Rename index "abc" in aggregates.sql
In order to prevent name collision with table "abc" in namespace.sql. Reported-by: Nathan Bossart Discussion: https://postgr.es/m/20240124173735.GA2708416%40nathanxps13
This commit is contained in:
parent
46a0cd4cef
commit
b91f918708
@ -2735,7 +2735,7 @@ CREATE TABLE btg AS SELECT
|
|||||||
'abc' || i % 10 AS z,
|
'abc' || i % 10 AS z,
|
||||||
i AS w
|
i AS w
|
||||||
FROM generate_series(1,10000) AS i;
|
FROM generate_series(1,10000) AS i;
|
||||||
CREATE INDEX abc ON btg(x,y);
|
CREATE INDEX btg_x_y_idx ON btg(x,y);
|
||||||
ANALYZE btg;
|
ANALYZE btg;
|
||||||
-- GROUP BY optimization by reorder columns by frequency
|
-- GROUP BY optimization by reorder columns by frequency
|
||||||
SET enable_hashagg=off;
|
SET enable_hashagg=off;
|
||||||
@ -2743,92 +2743,92 @@ SET max_parallel_workers= 0;
|
|||||||
SET max_parallel_workers_per_gather = 0;
|
SET max_parallel_workers_per_gather = 0;
|
||||||
-- Utilize index scan ordering to avoid a Sort operation
|
-- Utilize index scan ordering to avoid a Sort operation
|
||||||
EXPLAIN (COSTS OFF) SELECT count(*) FROM btg GROUP BY x,y;
|
EXPLAIN (COSTS OFF) SELECT count(*) FROM btg GROUP BY x,y;
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
----------------------------------------
|
------------------------------------------------
|
||||||
GroupAggregate
|
GroupAggregate
|
||||||
Group Key: x, y
|
Group Key: x, y
|
||||||
-> Index Only Scan using abc on btg
|
-> Index Only Scan using btg_x_y_idx on btg
|
||||||
(3 rows)
|
(3 rows)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF) SELECT count(*) FROM btg GROUP BY y,x;
|
EXPLAIN (COSTS OFF) SELECT count(*) FROM btg GROUP BY y,x;
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
----------------------------------------
|
------------------------------------------------
|
||||||
GroupAggregate
|
GroupAggregate
|
||||||
Group Key: x, y
|
Group Key: x, y
|
||||||
-> Index Only Scan using abc on btg
|
-> Index Only Scan using btg_x_y_idx on btg
|
||||||
(3 rows)
|
(3 rows)
|
||||||
|
|
||||||
-- Engage incremental sort
|
-- Engage incremental sort
|
||||||
explain (COSTS OFF) SELECT x,y FROM btg GROUP BY x,y,z,w;
|
explain (COSTS OFF) SELECT x,y FROM btg GROUP BY x,y,z,w;
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
-----------------------------------------
|
-------------------------------------------------
|
||||||
Group
|
Group
|
||||||
Group Key: x, y, z, w
|
Group Key: x, y, z, w
|
||||||
-> Incremental Sort
|
-> Incremental Sort
|
||||||
Sort Key: x, y, z, w
|
Sort Key: x, y, z, w
|
||||||
Presorted Key: x, y
|
Presorted Key: x, y
|
||||||
-> Index Scan using abc on btg
|
-> Index Scan using btg_x_y_idx on btg
|
||||||
(6 rows)
|
(6 rows)
|
||||||
|
|
||||||
explain (COSTS OFF) SELECT x,y FROM btg GROUP BY z,y,w,x;
|
explain (COSTS OFF) SELECT x,y FROM btg GROUP BY z,y,w,x;
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
-----------------------------------------
|
-------------------------------------------------
|
||||||
Group
|
Group
|
||||||
Group Key: x, y, z, w
|
Group Key: x, y, z, w
|
||||||
-> Incremental Sort
|
-> Incremental Sort
|
||||||
Sort Key: x, y, z, w
|
Sort Key: x, y, z, w
|
||||||
Presorted Key: x, y
|
Presorted Key: x, y
|
||||||
-> Index Scan using abc on btg
|
-> Index Scan using btg_x_y_idx on btg
|
||||||
(6 rows)
|
(6 rows)
|
||||||
|
|
||||||
explain (COSTS OFF) SELECT x,y FROM btg GROUP BY w,z,x,y;
|
explain (COSTS OFF) SELECT x,y FROM btg GROUP BY w,z,x,y;
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
-----------------------------------------
|
-------------------------------------------------
|
||||||
Group
|
Group
|
||||||
Group Key: x, y, w, z
|
Group Key: x, y, w, z
|
||||||
-> Incremental Sort
|
-> Incremental Sort
|
||||||
Sort Key: x, y, w, z
|
Sort Key: x, y, w, z
|
||||||
Presorted Key: x, y
|
Presorted Key: x, y
|
||||||
-> Index Scan using abc on btg
|
-> Index Scan using btg_x_y_idx on btg
|
||||||
(6 rows)
|
(6 rows)
|
||||||
|
|
||||||
explain (COSTS OFF) SELECT x,y FROM btg GROUP BY w,x,z,y;
|
explain (COSTS OFF) SELECT x,y FROM btg GROUP BY w,x,z,y;
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
-----------------------------------------
|
-------------------------------------------------
|
||||||
Group
|
Group
|
||||||
Group Key: x, y, w, z
|
Group Key: x, y, w, z
|
||||||
-> Incremental Sort
|
-> Incremental Sort
|
||||||
Sort Key: x, y, w, z
|
Sort Key: x, y, w, z
|
||||||
Presorted Key: x, y
|
Presorted Key: x, y
|
||||||
-> Index Scan using abc on btg
|
-> Index Scan using btg_x_y_idx on btg
|
||||||
(6 rows)
|
(6 rows)
|
||||||
|
|
||||||
-- Subqueries
|
-- Subqueries
|
||||||
explain (COSTS OFF) SELECT x,y
|
explain (COSTS OFF) SELECT x,y
|
||||||
FROM (SELECT * FROM btg ORDER BY x,y,w,z) AS q1
|
FROM (SELECT * FROM btg ORDER BY x,y,w,z) AS q1
|
||||||
GROUP BY (w,x,z,y);
|
GROUP BY (w,x,z,y);
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
----------------------------------------------
|
-------------------------------------------------
|
||||||
Group
|
Group
|
||||||
Group Key: btg.x, btg.y, btg.w, btg.z
|
Group Key: btg.x, btg.y, btg.w, btg.z
|
||||||
-> Incremental Sort
|
-> Incremental Sort
|
||||||
Sort Key: btg.x, btg.y, btg.w, btg.z
|
Sort Key: btg.x, btg.y, btg.w, btg.z
|
||||||
Presorted Key: btg.x, btg.y
|
Presorted Key: btg.x, btg.y
|
||||||
-> Index Scan using abc on btg
|
-> Index Scan using btg_x_y_idx on btg
|
||||||
(6 rows)
|
(6 rows)
|
||||||
|
|
||||||
explain (COSTS OFF) SELECT x,y
|
explain (COSTS OFF) SELECT x,y
|
||||||
FROM (SELECT * FROM btg ORDER BY x,y,w,z LIMIT 100) AS q1
|
FROM (SELECT * FROM btg ORDER BY x,y,w,z LIMIT 100) AS q1
|
||||||
GROUP BY (w,x,z,y);
|
GROUP BY (w,x,z,y);
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
----------------------------------------------------
|
-------------------------------------------------------
|
||||||
Group
|
Group
|
||||||
Group Key: btg.x, btg.y, btg.w, btg.z
|
Group Key: btg.x, btg.y, btg.w, btg.z
|
||||||
-> Limit
|
-> Limit
|
||||||
-> Incremental Sort
|
-> Incremental Sort
|
||||||
Sort Key: btg.x, btg.y, btg.w, btg.z
|
Sort Key: btg.x, btg.y, btg.w, btg.z
|
||||||
Presorted Key: btg.x, btg.y
|
Presorted Key: btg.x, btg.y
|
||||||
-> Index Scan using abc on btg
|
-> Index Scan using btg_x_y_idx on btg
|
||||||
(7 rows)
|
(7 rows)
|
||||||
|
|
||||||
-- Should work with and without GROUP-BY optimization
|
-- Should work with and without GROUP-BY optimization
|
||||||
@ -2844,8 +2844,8 @@ explain (COSTS OFF) SELECT x,y FROM btg GROUP BY w,x,z,y ORDER BY y,x,z,w;
|
|||||||
|
|
||||||
-- Utilize incremental sort to make the ORDER BY rule a bit cheaper
|
-- Utilize incremental sort to make the ORDER BY rule a bit cheaper
|
||||||
explain (COSTS OFF) SELECT x,w FROM btg GROUP BY w,x,y,z ORDER BY x*x,z;
|
explain (COSTS OFF) SELECT x,w FROM btg GROUP BY w,x,y,z ORDER BY x*x,z;
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
-----------------------------------------------
|
-------------------------------------------------------
|
||||||
Sort
|
Sort
|
||||||
Sort Key: ((x * x)), z
|
Sort Key: ((x * x)), z
|
||||||
-> Group
|
-> Group
|
||||||
@ -2853,7 +2853,7 @@ explain (COSTS OFF) SELECT x,w FROM btg GROUP BY w,x,y,z ORDER BY x*x,z;
|
|||||||
-> Incremental Sort
|
-> Incremental Sort
|
||||||
Sort Key: x, y, w, z
|
Sort Key: x, y, w, z
|
||||||
Presorted Key: x, y
|
Presorted Key: x, y
|
||||||
-> Index Scan using abc on btg
|
-> Index Scan using btg_x_y_idx on btg
|
||||||
(8 rows)
|
(8 rows)
|
||||||
|
|
||||||
SET enable_incremental_sort = off;
|
SET enable_incremental_sort = off;
|
||||||
|
@ -1188,7 +1188,7 @@ CREATE TABLE btg AS SELECT
|
|||||||
'abc' || i % 10 AS z,
|
'abc' || i % 10 AS z,
|
||||||
i AS w
|
i AS w
|
||||||
FROM generate_series(1,10000) AS i;
|
FROM generate_series(1,10000) AS i;
|
||||||
CREATE INDEX abc ON btg(x,y);
|
CREATE INDEX btg_x_y_idx ON btg(x,y);
|
||||||
ANALYZE btg;
|
ANALYZE btg;
|
||||||
|
|
||||||
-- GROUP BY optimization by reorder columns by frequency
|
-- GROUP BY optimization by reorder columns by frequency
|
||||||
|
Loading…
x
Reference in New Issue
Block a user