diff --git a/src/test/regress/expected/cte_inline.out b/src/test/regress/expected/cte_inline.out index 46156ac93..a534a7ac9 100644 --- a/src/test/regress/expected/cte_inline.out +++ b/src/test/regress/expected/cte_inline.out @@ -449,6 +449,29 @@ DEBUG: Creating router plan (5 rows) \set VERBOSITY default +-- enable_group_by_reordering is a new GUC introduced in PG15 +-- it does some optimization of the order of group by keys which results +-- in a different explain output plan between PG13/14 and PG15 +-- Hence we set that GUC to off. +SHOW server_version \gset +SELECT substring(:'server_version', '\d+')::int > 14 AS server_version_above_fourteen +\gset +\if :server_version_above_fourteen +SET enable_group_by_reordering TO off; +\endif +SELECT DISTINCT 1 FROM run_command_on_workers($$ALTER SYSTEM SET enable_group_by_reordering TO off;$$); + ?column? +--------------------------------------------------------------------- + 1 +(1 row) + +SELECT run_command_on_workers($$SELECT pg_reload_conf()$$); + run_command_on_workers +--------------------------------------------------------------------- + (localhost,57637,t,t) + (localhost,57638,t,t) +(2 rows) + EXPLAIN (COSTS OFF) WITH cte_1 AS NOT MATERIALIZED (SELECT * FROM test_table) SELECT count(*) @@ -487,6 +510,22 @@ DEBUG: join prunable for intervals [1073741824,2147483647] and [0,1073741823] -> Seq Scan on test_table_1960000 test_table_1 (12 rows) +\if :server_version_above_fourteen +RESET enable_group_by_reordering; +\endif +SELECT DISTINCT 1 FROM run_command_on_workers($$ALTER SYSTEM RESET enable_group_by_reordering;$$); + ?column? +--------------------------------------------------------------------- + 1 +(1 row) + +SELECT run_command_on_workers($$SELECT pg_reload_conf()$$); + run_command_on_workers +--------------------------------------------------------------------- + (localhost,57637,t,t) + (localhost,57638,t,t) +(2 rows) + -- ctes with volatile functions are not -- inlined WITH cte_1 AS (SELECT *, random() FROM test_table) diff --git a/src/test/regress/expected/multi_explain.out b/src/test/regress/expected/multi_explain.out index 8d4d00d36..86435fe86 100644 --- a/src/test/regress/expected/multi_explain.out +++ b/src/test/regress/expected/multi_explain.out @@ -632,6 +632,21 @@ Aggregate -> Seq Scan on events_1400285 events Filter: ((event_type)::text = ANY ('{click,submit,pay}'::text[])) -- Union and left join subquery pushdown +-- enable_group_by_reordering is a new GUC introduced in PG15 +-- it does some optimization of the order of group by keys which results +-- in a different explain output plan between PG13/14 and PG15 +-- Hence we set that GUC to off. +SHOW server_version \gset +SELECT substring(:'server_version', '\d+')::int > 14 AS server_version_above_fourteen +\gset +\if :server_version_above_fourteen +SET enable_group_by_reordering TO off; +\endif +SELECT DISTINCT 1 FROM run_command_on_workers($$ALTER SYSTEM SET enable_group_by_reordering TO off;$$); +1 +SELECT run_command_on_workers($$SELECT pg_reload_conf()$$); +(localhost,57637,t,t) +(localhost,57638,t,t) EXPLAIN (COSTS OFF) SELECT avg(array_length(events, 1)) AS event_average, @@ -854,6 +869,14 @@ Sort Sort Key: events_2.composite_id -> Seq Scan on events_1400285 events_2 Filter: ((composite_id >= '(1,-9223372036854775808)'::user_composite_type) AND (composite_id <= '(1,9223372036854775807)'::user_composite_type) AND ((event_type)::text = 'pay'::text)) +\if :server_version_above_fourteen +RESET enable_group_by_reordering; +\endif +SELECT DISTINCT 1 FROM run_command_on_workers($$ALTER SYSTEM RESET enable_group_by_reordering;$$); +1 +SELECT run_command_on_workers($$SELECT pg_reload_conf()$$); +(localhost,57637,t,t) +(localhost,57638,t,t) -- Lateral join subquery pushdown -- set subquery_pushdown due to limit in the query SET citus.subquery_pushdown to ON; diff --git a/src/test/regress/sql/cte_inline.sql b/src/test/regress/sql/cte_inline.sql index 8c70bc13f..c554d5df9 100644 --- a/src/test/regress/sql/cte_inline.sql +++ b/src/test/regress/sql/cte_inline.sql @@ -236,6 +236,19 @@ $Q$); \set VERBOSITY default +-- enable_group_by_reordering is a new GUC introduced in PG15 +-- it does some optimization of the order of group by keys which results +-- in a different explain output plan between PG13/14 and PG15 +-- Hence we set that GUC to off. +SHOW server_version \gset +SELECT substring(:'server_version', '\d+')::int > 14 AS server_version_above_fourteen +\gset +\if :server_version_above_fourteen +SET enable_group_by_reordering TO off; +\endif +SELECT DISTINCT 1 FROM run_command_on_workers($$ALTER SYSTEM SET enable_group_by_reordering TO off;$$); +SELECT run_command_on_workers($$SELECT pg_reload_conf()$$); + EXPLAIN (COSTS OFF) WITH cte_1 AS NOT MATERIALIZED (SELECT * FROM test_table) SELECT count(*) @@ -245,6 +258,11 @@ FROM cte_1 as second_entry USING (key); +\if :server_version_above_fourteen +RESET enable_group_by_reordering; +\endif +SELECT DISTINCT 1 FROM run_command_on_workers($$ALTER SYSTEM RESET enable_group_by_reordering;$$); +SELECT run_command_on_workers($$SELECT pg_reload_conf()$$); -- ctes with volatile functions are not diff --git a/src/test/regress/sql/multi_explain.sql b/src/test/regress/sql/multi_explain.sql index 505eda13e..3b2cf26d6 100644 --- a/src/test/regress/sql/multi_explain.sql +++ b/src/test/regress/sql/multi_explain.sql @@ -250,6 +250,20 @@ FROM user_id) AS subquery; -- Union and left join subquery pushdown + +-- enable_group_by_reordering is a new GUC introduced in PG15 +-- it does some optimization of the order of group by keys which results +-- in a different explain output plan between PG13/14 and PG15 +-- Hence we set that GUC to off. +SHOW server_version \gset +SELECT substring(:'server_version', '\d+')::int > 14 AS server_version_above_fourteen +\gset +\if :server_version_above_fourteen +SET enable_group_by_reordering TO off; +\endif +SELECT DISTINCT 1 FROM run_command_on_workers($$ALTER SYSTEM SET enable_group_by_reordering TO off;$$); +SELECT run_command_on_workers($$SELECT pg_reload_conf()$$); + EXPLAIN (COSTS OFF) SELECT avg(array_length(events, 1)) AS event_average, @@ -385,6 +399,12 @@ GROUP BY ORDER BY count_pay; +\if :server_version_above_fourteen +RESET enable_group_by_reordering; +\endif +SELECT DISTINCT 1 FROM run_command_on_workers($$ALTER SYSTEM RESET enable_group_by_reordering;$$); +SELECT run_command_on_workers($$SELECT pg_reload_conf()$$); + -- Lateral join subquery pushdown -- set subquery_pushdown due to limit in the query SET citus.subquery_pushdown to ON;