diff --git a/src/test/regress/expected/multi_mx_hide_shard_names.out b/src/test/regress/expected/multi_mx_hide_shard_names.out index 1a885f120..abd739c91 100644 --- a/src/test/regress/expected/multi_mx_hide_shard_names.out +++ b/src/test/regress/expected/multi_mx_hide_shard_names.out @@ -471,10 +471,6 @@ SELECT relname FROM pg_catalog.pg_class WHERE relnamespace = 'mx_hide_shard_name test_table_2_1130000 (4 rows) --- PG16 added one more backend type B_STANDALONE_BACKEND --- and also alphabetized the backend types, hence the orders changed --- Relevant PG16 commit: --- https://github.com/postgres/postgres/commit/0c679464a837079acc75ff1d45eaa83f79e05690 -- Relevant Pg17 commit: -- https://github.com/postgres/postgres/commit/067701f57758f9baed5bd9d868539738d77bfa92 -- Relevant PG18 commit: @@ -482,7 +478,6 @@ SELECT relname FROM pg_catalog.pg_class WHERE relnamespace = 'mx_hide_shard_name SHOW server_version \gset SELECT substring(:'server_version', '\d+')::int >= 18 AS server_version_ge_18 \gset SELECT substring(:'server_version', '\d+')::int >= 17 AS server_version_ge_17 \gset -SELECT substring(:'server_version', '\d+')::int >= 16 AS server_version_ge_16 \gset \if :server_version_ge_18 SELECT 1 AS client_backend \gset SELECT 5 AS bgworker \gset @@ -491,14 +486,10 @@ SELECT substring(:'server_version', '\d+')::int >= 16 AS server_version_ge_16 \g SELECT 1 AS client_backend \gset SELECT 4 AS bgworker \gset SELECT 5 AS walsender \gset -\elif :server_version_ge_16 +\else SELECT 4 AS client_backend \gset SELECT 5 AS bgworker \gset SELECT 12 AS walsender \gset -\else - SELECT 3 AS client_backend \gset - SELECT 4 AS bgworker \gset - SELECT 9 AS walsender \gset \endif -- say, we set it to bgworker -- the shards and indexes do not show up diff --git a/src/test/regress/expected/multi_mx_hide_shard_names_0.out b/src/test/regress/expected/multi_mx_hide_shard_names_0.out index 21ae97d5a..6f08cd87c 100644 --- a/src/test/regress/expected/multi_mx_hide_shard_names_0.out +++ b/src/test/regress/expected/multi_mx_hide_shard_names_0.out @@ -472,10 +472,6 @@ SELECT relname FROM pg_catalog.pg_class WHERE relnamespace = 'mx_hide_shard_name test_table_2_1130000 (4 rows) --- PG16 added one more backend type B_STANDALONE_BACKEND --- and also alphabetized the backend types, hence the orders changed --- Relevant PG16 commit: --- https://github.com/postgres/postgres/commit/0c679464a837079acc75ff1d45eaa83f79e05690 -- Relevant Pg17 commit: -- https://github.com/postgres/postgres/commit/067701f57758f9baed5bd9d868539738d77bfa92 -- Relevant PG18 commit: @@ -483,7 +479,6 @@ SELECT relname FROM pg_catalog.pg_class WHERE relnamespace = 'mx_hide_shard_name SHOW server_version \gset SELECT substring(:'server_version', '\d+')::int >= 18 AS server_version_ge_18 \gset SELECT substring(:'server_version', '\d+')::int >= 17 AS server_version_ge_17 \gset -SELECT substring(:'server_version', '\d+')::int >= 16 AS server_version_ge_16 \gset \if :server_version_ge_18 SELECT 1 AS client_backend \gset SELECT 5 AS bgworker \gset @@ -492,14 +487,10 @@ SELECT substring(:'server_version', '\d+')::int >= 16 AS server_version_ge_16 \g SELECT 1 AS client_backend \gset SELECT 4 AS bgworker \gset SELECT 5 AS walsender \gset -\elif :server_version_ge_16 +\else SELECT 4 AS client_backend \gset SELECT 5 AS bgworker \gset SELECT 12 AS walsender \gset -\else - SELECT 3 AS client_backend \gset - SELECT 4 AS bgworker \gset - SELECT 9 AS walsender \gset \endif -- say, we set it to bgworker -- the shards and indexes do not show up diff --git a/src/test/regress/expected/multi_outer_join_columns.out b/src/test/regress/expected/multi_outer_join_columns.out index 3d32a8ef5..095f93280 100644 --- a/src/test/regress/expected/multi_outer_join_columns.out +++ b/src/test/regress/expected/multi_outer_join_columns.out @@ -2,16 +2,6 @@ --- do not cause issues for the postgres planner, in particular postgres versions 16+, where the --- varnullingrels field of a VAR node may contain relids of join relations that can make the var --- NULL; in a rewritten distributed query without a join such relids do not have a meaning. --- This test has an alternative goldfile because of the following feature in Postgres 16: --- https://github.com/postgres/postgres/commit/1349d2790bf48a4de072931c722f39337e72055e --- -SHOW server_version \gset -SELECT substring(:'server_version', '\d+')::int >= 16 AS server_version_ge_16; - server_version_ge_16 ---------------------------------------------------------------------- - t -(1 row) - CREATE SCHEMA outer_join_columns_testing; SET search_path to 'outer_join_columns_testing'; SET citus.next_shard_id TO 30070000; diff --git a/src/test/regress/expected/multi_outer_join_columns_1.out b/src/test/regress/expected/multi_outer_join_columns_1.out deleted file mode 100644 index 4df79cc92..000000000 --- a/src/test/regress/expected/multi_outer_join_columns_1.out +++ /dev/null @@ -1,422 +0,0 @@ ---- Test for verifying that column references (var nodes) in targets that cannot be pushed down ---- do not cause issues for the postgres planner, in particular postgres versions 16+, where the ---- varnullingrels field of a VAR node may contain relids of join relations that can make the var ---- NULL; in a rewritten distributed query without a join such relids do not have a meaning. --- This test has an alternative goldfile because of the following feature in Postgres 16: --- https://github.com/postgres/postgres/commit/1349d2790bf48a4de072931c722f39337e72055e --- -SHOW server_version \gset -SELECT substring(:'server_version', '\d+')::int >= 16 AS server_version_ge_16; - server_version_ge_16 ---------------------------------------------------------------------- - f -(1 row) - -CREATE SCHEMA outer_join_columns_testing; -SET search_path to 'outer_join_columns_testing'; -SET citus.next_shard_id TO 30070000; -SET citus.shard_replication_factor TO 1; -SET citus.enable_local_execution TO ON; -CREATE TABLE t1 (id INT PRIMARY KEY); -INSERT INTO t1 VALUES (1), (2); -CREATE TABLE t2 (id INT, account_id INT, a2 INT, PRIMARY KEY(id, account_id)); -INSERT INTO t2 VALUES (3, 1, 10), (4, 2, 20), (5, 1, NULL); -SELECT create_distributed_table('t1', 'id'); -NOTICE: Copying data from local table... -NOTICE: copying the data has completed -DETAIL: The local data in the table is no longer visible, but is still on disk. -HINT: To remove the local data, run: SELECT truncate_local_data_after_distributing_table($$outer_join_columns_testing.t1$$) - create_distributed_table ---------------------------------------------------------------------- - -(1 row) - -SELECT create_distributed_table('t2', 'account_id'); -NOTICE: Copying data from local table... -NOTICE: copying the data has completed -DETAIL: The local data in the table is no longer visible, but is still on disk. -HINT: To remove the local data, run: SELECT truncate_local_data_after_distributing_table($$outer_join_columns_testing.t2$$) - create_distributed_table ---------------------------------------------------------------------- - -(1 row) - --- Test the issue seen in #7705; a target expression with --- a window function that cannot be pushed down because the --- partion by is not on the distribution column also includes --- a column from the inner side of a left outer join, which --- produces a non-empty varnullingrels set in PG 16 (and higher) -SELECT t1.id, MAX(t2.a2) OVER (PARTITION BY t2.id) -FROM t1 LEFT OUTER JOIN t2 ON t1.id = t2.account_id; - id | max ---------------------------------------------------------------------- - 1 | 10 - 2 | 20 - 1 | -(3 rows) - -select public.explain_filter(' -EXPLAIN (VERBOSE, COSTS OFF, TIMING OFF) -SELECT t1.id, MAX(t2.a2) OVER (PARTITION BY t2.id) -FROM t1 LEFT OUTER JOIN t2 ON t1.id = t2.account_id -', true); - explain_filter ---------------------------------------------------------------------- - WindowAgg - Output: remote_scan.id, max(remote_scan.max) OVER (?), remote_scan.worker_column_3 - -> Sort - Output: remote_scan.worker_column_3, remote_scan.id, remote_scan.max - Sort Key: remote_scan.worker_column_3 - -> Custom Scan (Citus Adaptive) - Output: remote_scan.worker_column_3, remote_scan.id, remote_scan.max - Task Count: 4 - Tasks Shown: One of 4 - -> Task - Query: SELECT worker_column_1 AS id, worker_column_2 AS max, worker_column_3 FROM (SELECT t1.id AS worker_column_1, t2.a2 AS worker_column_2, t2.id AS worker_column_3 FROM (outer_join_columns_testing.t1_30070000 t1 LEFT JOIN outer_join_columns_testing.t2_30070004 t2 ON ((t1.id OPERATOR(pg_catalog.=) t2.account_id)))) worker_subquery - Node: host=localhost port=xxxxx dbname=regression - -> Hash Right Join - Output: t1.id, t2.a2, t2.id - Inner Unique: true - Hash Cond: (t2.account_id = t1.id) - -> Seq Scan on outer_join_columns_testing.t2_30070004 t2 - Output: t2.id, t2.account_id, t2.a2 - -> Hash - Output: t1.id - -> Seq Scan on outer_join_columns_testing.t1_30070000 t1 - Output: t1.id -(22 rows) - -SELECT t1.id, MAX(t2.a2) OVER (PARTITION BY t2.id) -FROM t2 RIGHT OUTER JOIN t1 ON t1.id = t2.account_id; - id | max ---------------------------------------------------------------------- - 1 | 10 - 2 | 20 - 1 | -(3 rows) - -select public.explain_filter(' -EXPLAIN (VERBOSE, COSTS OFF, TIMING OFF) -SELECT t1.id, MAX(t2.a2) OVER (PARTITION BY t2.id) -FROM t2 RIGHT OUTER JOIN t1 ON t1.id = t2.account_id -', true); - explain_filter ---------------------------------------------------------------------- - WindowAgg - Output: remote_scan.id, max(remote_scan.max) OVER (?), remote_scan.worker_column_3 - -> Sort - Output: remote_scan.worker_column_3, remote_scan.id, remote_scan.max - Sort Key: remote_scan.worker_column_3 - -> Custom Scan (Citus Adaptive) - Output: remote_scan.worker_column_3, remote_scan.id, remote_scan.max - Task Count: 4 - Tasks Shown: One of 4 - -> Task - Query: SELECT worker_column_1 AS id, worker_column_2 AS max, worker_column_3 FROM (SELECT t1.id AS worker_column_1, t2.a2 AS worker_column_2, t2.id AS worker_column_3 FROM (outer_join_columns_testing.t2_30070004 t2 RIGHT JOIN outer_join_columns_testing.t1_30070000 t1 ON ((t1.id OPERATOR(pg_catalog.=) t2.account_id)))) worker_subquery - Node: host=localhost port=xxxxx dbname=regression - -> Hash Right Join - Output: t1.id, t2.a2, t2.id - Inner Unique: true - Hash Cond: (t2.account_id = t1.id) - -> Seq Scan on outer_join_columns_testing.t2_30070004 t2 - Output: t2.id, t2.account_id, t2.a2 - -> Hash - Output: t1.id - -> Seq Scan on outer_join_columns_testing.t1_30070000 t1 - Output: t1.id -(22 rows) - -SELECT DISTINCT t1.id, MAX(t2.a2) OVER (PARTITION BY t2.id) -FROM t1 LEFT OUTER JOIN t2 ON t1.id = t2.account_id; - id | max ---------------------------------------------------------------------- - 1 | - 1 | 10 - 2 | 20 -(3 rows) - -select public.explain_filter(' -EXPLAIN (VERBOSE, COSTS OFF, TIMING OFF) -SELECT DISTINCT t1.id, MAX(t2.a2) OVER (PARTITION BY t2.id) -FROM t1 LEFT OUTER JOIN t2 ON t1.id = t2.account_id -', true); - explain_filter ---------------------------------------------------------------------- - HashAggregate - Output: remote_scan.id, (max(remote_scan.max) OVER (?)), remote_scan.worker_column_3 - Group Key: remote_scan.id, max(remote_scan.max) OVER (?) - -> WindowAgg - Output: remote_scan.id, max(remote_scan.max) OVER (?), remote_scan.worker_column_3 - -> Sort - Output: remote_scan.worker_column_3, remote_scan.id, remote_scan.max - Sort Key: remote_scan.worker_column_3 - -> Custom Scan (Citus Adaptive) - Output: remote_scan.worker_column_3, remote_scan.id, remote_scan.max - Task Count: 4 - Tasks Shown: One of 4 - -> Task - Query: SELECT worker_column_1 AS id, worker_column_2 AS max, worker_column_3 FROM (SELECT t1.id AS worker_column_1, t2.a2 AS worker_column_2, t2.id AS worker_column_3 FROM (outer_join_columns_testing.t1_30070000 t1 LEFT JOIN outer_join_columns_testing.t2_30070004 t2 ON ((t1.id OPERATOR(pg_catalog.=) t2.account_id)))) worker_subquery - Node: host=localhost port=xxxxx dbname=regression - -> Hash Right Join - Output: t1.id, t2.a2, t2.id - Inner Unique: true - Hash Cond: (t2.account_id = t1.id) - -> Seq Scan on outer_join_columns_testing.t2_30070004 t2 - Output: t2.id, t2.account_id, t2.a2 - -> Hash - Output: t1.id - -> Seq Scan on outer_join_columns_testing.t1_30070000 t1 - Output: t1.id -(25 rows) - -CREATE SEQUENCE test_seq START 101; -CREATE OR REPLACE FUNCTION TEST_F(int) returns INT language sql stable as $$ select $1 + 42; $$ ; --- Issue #7705 also occurs if a target expression includes a column --- of a distributed table that is on the inner side of a left outer --- join and a call to nextval(), because nextval() cannot be pushed --- down, and must be run on the coordinator -SELECT t1.id, TEST_F(t2.a2 + nextval('test_seq') :: int) -FROM t1 LEFT OUTER JOIN t2 ON t1.id = t2.account_id -ORDER BY t1.id; - id | test_f ---------------------------------------------------------------------- - 1 | 153 - 1 | - 2 | 165 -(3 rows) - -EXPLAIN (VERBOSE, COSTS OFF, TIMING OFF) -SELECT t1.id, TEST_F(t2.a2 + nextval('test_seq') :: int) -FROM t1 LEFT OUTER JOIN t2 ON t1.id = t2.account_id -ORDER BY t1.id; - QUERY PLAN ---------------------------------------------------------------------- - Result - Output: remote_scan.id, ((remote_scan.test_f + (nextval('test_seq'::regclass))::integer) + 42) - -> Sort - Output: remote_scan.id, remote_scan.test_f - Sort Key: remote_scan.id - -> Custom Scan (Citus Adaptive) - Output: remote_scan.id, remote_scan.test_f - Task Count: 4 - Tasks Shown: One of 4 - -> Task - Query: SELECT worker_column_1 AS id, worker_column_2 AS test_f FROM (SELECT t1.id AS worker_column_1, t2.a2 AS worker_column_2 FROM (outer_join_columns_testing.t1_30070000 t1 LEFT JOIN outer_join_columns_testing.t2_30070004 t2 ON ((t1.id OPERATOR(pg_catalog.=) t2.account_id)))) worker_subquery - Node: host=localhost port=xxxxx dbname=regression - -> Hash Right Join - Output: t1.id, t2.a2 - Inner Unique: true - Hash Cond: (t2.account_id = t1.id) - -> Seq Scan on outer_join_columns_testing.t2_30070004 t2 - Output: t2.id, t2.account_id, t2.a2 - -> Hash - Output: t1.id - -> Seq Scan on outer_join_columns_testing.t1_30070000 t1 - Output: t1.id -(22 rows) - -SELECT t1.id, CASE nextval('test_seq') % 2 = 0 WHEN true THEN t2.a2 ELSE 1 END -FROM t1 LEFT OUTER JOIN t2 ON t1.id = t2.account_id -ORDER BY t1.id; - id | case ---------------------------------------------------------------------- - 1 | 10 - 1 | 1 - 2 | 20 -(3 rows) - -EXPLAIN (VERBOSE, COSTS OFF, TIMING OFF) -SELECT t1.id, CASE nextval('test_seq') %2 = 0 WHEN true THEN t2.a2 ELSE 1 END -FROM t1 LEFT OUTER JOIN t2 ON t1.id = t2.account_id -ORDER BY t1.id; - QUERY PLAN ---------------------------------------------------------------------- - Result - Output: remote_scan.id, CASE ((nextval('test_seq'::regclass) % '2'::bigint) = 0) WHEN CASE_TEST_EXPR THEN remote_scan."case" ELSE 1 END - -> Sort - Output: remote_scan.id, remote_scan."case" - Sort Key: remote_scan.id - -> Custom Scan (Citus Adaptive) - Output: remote_scan.id, remote_scan."case" - Task Count: 4 - Tasks Shown: One of 4 - -> Task - Query: SELECT worker_column_1 AS id, worker_column_2 AS "case" FROM (SELECT t1.id AS worker_column_1, t2.a2 AS worker_column_2 FROM (outer_join_columns_testing.t1_30070000 t1 LEFT JOIN outer_join_columns_testing.t2_30070004 t2 ON ((t1.id OPERATOR(pg_catalog.=) t2.account_id)))) worker_subquery - Node: host=localhost port=xxxxx dbname=regression - -> Hash Right Join - Output: t1.id, t2.a2 - Inner Unique: true - Hash Cond: (t2.account_id = t1.id) - -> Seq Scan on outer_join_columns_testing.t2_30070004 t2 - Output: t2.id, t2.account_id, t2.a2 - -> Hash - Output: t1.id - -> Seq Scan on outer_join_columns_testing.t1_30070000 t1 - Output: t1.id -(22 rows) - --- Issue #7787: count distinct of a column from the inner side of a --- left outer join will have a non-empty varnullingrels in the query --- tree returned by Postgres 16+, so ensure this is not reflected in --- the worker subquery constructed by Citus; it has just one relation, --- for the pushed down subquery. -SELECT COUNT(DISTINCT a2) -FROM t1 LEFT OUTER JOIN t2 ON t1.id = t2.account_id; - count ---------------------------------------------------------------------- - 2 -(1 row) - -EXPLAIN (VERBOSE, COSTS OFF, TIMING OFF) -SELECT COUNT(DISTINCT a2) -FROM t1 LEFT OUTER JOIN t2 ON t1.id = t2.account_id; - QUERY PLAN ---------------------------------------------------------------------- - Aggregate - Output: count(DISTINCT remote_scan.count) - -> Custom Scan (Citus Adaptive) - Output: remote_scan.count - Task Count: 4 - Tasks Shown: One of 4 - -> Task - Query: SELECT worker_column_1 AS count FROM (SELECT t2.a2 AS worker_column_1 FROM (outer_join_columns_testing.t1_30070000 t1 LEFT JOIN outer_join_columns_testing.t2_30070004 t2 ON ((t1.id OPERATOR(pg_catalog.=) t2.account_id)))) worker_subquery GROUP BY worker_column_1 - Node: host=localhost port=xxxxx dbname=regression - -> HashAggregate - Output: t2.a2 - Group Key: t2.a2 - -> Hash Right Join - Output: t2.a2 - Inner Unique: true - Hash Cond: (t2.account_id = t1.id) - -> Seq Scan on outer_join_columns_testing.t2_30070004 t2 - Output: t2.id, t2.account_id, t2.a2 - -> Hash - Output: t1.id - -> Seq Scan on outer_join_columns_testing.t1_30070000 t1 - Output: t1.id -(22 rows) - --- Issue #7787 also occurs with a HAVING clause -SELECT 1 -FROM t1 LEFT OUTER JOIN t2 ON t1.id = t2.account_id -HAVING COUNT(DISTINCT a2) > 1; - ?column? ---------------------------------------------------------------------- - 1 -(1 row) - -select public.explain_filter(' -EXPLAIN (VERBOSE, COSTS OFF, TIMING OFF) -SELECT 1 -FROM t1 LEFT OUTER JOIN t2 ON t1.id = t2.account_id -HAVING COUNT(DISTINCT a2) > 1; -', true); - explain_filter ---------------------------------------------------------------------- - Aggregate - Output: remote_scan."?column?" - Filter: (count(DISTINCT remote_scan.worker_column_2) > 1) - -> Custom Scan (Citus Adaptive) - Output: remote_scan."?column?", remote_scan.worker_column_2 - Task Count: 4 - Tasks Shown: One of 4 - -> Task - Query: SELECT 1, worker_column_1 AS worker_column_2 FROM (SELECT t2.a2 AS worker_column_1 FROM (outer_join_columns_testing.t1_30070000 t1 LEFT JOIN outer_join_columns_testing.t2_30070004 t2 ON ((t1.id OPERATOR(pg_catalog.=) t2.account_id)))) worker_subquery GROUP BY worker_column_1 - Node: host=localhost port=xxxxx dbname=regression - -> HashAggregate - Output: 1, t2.a2 - Group Key: t2.a2 - -> Hash Right Join - Output: t2.a2 - Inner Unique: true - Hash Cond: (t2.account_id = t1.id) - -> Seq Scan on outer_join_columns_testing.t2_30070004 t2 - Output: t2.id, t2.account_id, t2.a2 - -> Hash - Output: t1.id - -> Seq Scan on outer_join_columns_testing.t1_30070000 t1 - Output: t1.id -(23 rows) - --- Check right outer join -SELECT COUNT(DISTINCT a2) -FROM t2 RIGHT OUTER JOIN t1 ON t2.account_id = t1.id; - count ---------------------------------------------------------------------- - 2 -(1 row) - -EXPLAIN (VERBOSE, COSTS OFF, TIMING OFF) -SELECT COUNT(DISTINCT a2) -FROM t2 RIGHT OUTER JOIN t1 ON t2.account_id = t1.id; - QUERY PLAN ---------------------------------------------------------------------- - Aggregate - Output: count(DISTINCT remote_scan.count) - -> Custom Scan (Citus Adaptive) - Output: remote_scan.count - Task Count: 4 - Tasks Shown: One of 4 - -> Task - Query: SELECT worker_column_1 AS count FROM (SELECT t2.a2 AS worker_column_1 FROM (outer_join_columns_testing.t2_30070004 t2 RIGHT JOIN outer_join_columns_testing.t1_30070000 t1 ON ((t2.account_id OPERATOR(pg_catalog.=) t1.id)))) worker_subquery GROUP BY worker_column_1 - Node: host=localhost port=xxxxx dbname=regression - -> HashAggregate - Output: t2.a2 - Group Key: t2.a2 - -> Hash Right Join - Output: t2.a2 - Inner Unique: true - Hash Cond: (t2.account_id = t1.id) - -> Seq Scan on outer_join_columns_testing.t2_30070004 t2 - Output: t2.id, t2.account_id, t2.a2 - -> Hash - Output: t1.id - -> Seq Scan on outer_join_columns_testing.t1_30070000 t1 - Output: t1.id -(22 rows) - --- Check both count distinct and having clause -SELECT COUNT(DISTINCT a2) -FROM t1 LEFT OUTER JOIN t2 ON t1.id = t2.account_id -HAVING COUNT(DISTINCT t2.id) > 1; - count ---------------------------------------------------------------------- - 2 -(1 row) - -EXPLAIN (VERBOSE, COSTS OFF, TIMING OFF) -SELECT COUNT(DISTINCT a2) -FROM t1 LEFT OUTER JOIN t2 ON t1.id = t2.account_id -HAVING COUNT(DISTINCT t2.id) > 1; - QUERY PLAN ---------------------------------------------------------------------- - Aggregate - Output: count(DISTINCT remote_scan.count) - Filter: (count(DISTINCT remote_scan.worker_column_2) > 1) - -> Custom Scan (Citus Adaptive) - Output: remote_scan.count, remote_scan.worker_column_2 - Task Count: 4 - Tasks Shown: One of 4 - -> Task - Query: SELECT worker_column_1 AS count, worker_column_2 FROM (SELECT t2.a2 AS worker_column_1, t2.id AS worker_column_2 FROM (outer_join_columns_testing.t1_30070000 t1 LEFT JOIN outer_join_columns_testing.t2_30070004 t2 ON ((t1.id OPERATOR(pg_catalog.=) t2.account_id)))) worker_subquery GROUP BY worker_column_1, worker_column_2 - Node: host=localhost port=xxxxx dbname=regression - -> HashAggregate - Output: t2.a2, t2.id - Group Key: t2.a2, t2.id - -> Hash Right Join - Output: t2.a2, t2.id - Inner Unique: true - Hash Cond: (t2.account_id = t1.id) - -> Seq Scan on outer_join_columns_testing.t2_30070004 t2 - Output: t2.id, t2.account_id, t2.a2 - -> Hash - Output: t1.id - -> Seq Scan on outer_join_columns_testing.t1_30070000 t1 - Output: t1.id -(23 rows) - ---- cleanup -\set VERBOSITY TERSE -DROP SCHEMA outer_join_columns_testing CASCADE; -NOTICE: drop cascades to 4 other objects -RESET all; diff --git a/src/test/regress/expected/multi_schema_support.out b/src/test/regress/expected/multi_schema_support.out index e6b5ac9a9..a096d82e8 100644 --- a/src/test/regress/expected/multi_schema_support.out +++ b/src/test/regress/expected/multi_schema_support.out @@ -348,8 +348,6 @@ SELECT * FROM nation_hash ORDER BY 1,2,3,4; --test COLLATION with schema SET search_path TO public; SHOW server_version \gset -SELECT substring(:'server_version', '\d+')::int >= 16 AS server_version_ge_16 -\gset SELECT substring(:'server_version', '\d+')::int >= 17 AS server_version_ge_17 \gset \if :server_version_ge_17 @@ -357,12 +355,10 @@ SELECT substring(:'server_version', '\d+')::int >= 17 AS server_version_ge_17 -- Relevant PG commit: -- https://github.com/postgres/postgres/commit/f696c0cd5f299f1b51e214efc55a22a782cc175d SELECT quote_ident((SELECT CASE WHEN datlocprovider='i' THEN datlocale ELSE datcollate END FROM pg_database WHERE datname = current_database())) as current_locale \gset -\elif :server_version_ge_16 +\else -- In PG16, read-only server settings lc_collate and lc_ctype are removed -- Relevant PG commit: b0f6c437160db640d4ea3e49398ebc3ba39d1982 SELECT quote_ident((SELECT CASE WHEN datlocprovider='i' THEN daticulocale ELSE datcollate END FROM pg_database WHERE datname = current_database())) as current_locale \gset -\else -SELECT quote_ident(current_setting('lc_collate')) as current_locale \gset \endif CREATE COLLATION test_schema_support.english (LOCALE = :current_locale); \c - - - :master_port diff --git a/src/test/regress/expected/pg16.out b/src/test/regress/expected/pg16.out index a172c54c0..00a082c13 100644 --- a/src/test/regress/expected/pg16.out +++ b/src/test/regress/expected/pg16.out @@ -1,13 +1,6 @@ -- -- PG16 -- -SHOW server_version \gset -SELECT substring(:'server_version', '\d+')::int >= 16 AS server_version_ge_16 -\gset -\if :server_version_ge_16 -\else -\q -\endif CREATE SCHEMA pg16; SET search_path TO pg16; SET citus.next_shard_id TO 950000; diff --git a/src/test/regress/expected/pg16_0.out b/src/test/regress/expected/pg16_0.out deleted file mode 100644 index 730c916ca..000000000 --- a/src/test/regress/expected/pg16_0.out +++ /dev/null @@ -1,9 +0,0 @@ --- --- PG16 --- -SHOW server_version \gset -SELECT substring(:'server_version', '\d+')::int >= 16 AS server_version_ge_16 -\gset -\if :server_version_ge_16 -\else -\q diff --git a/src/test/regress/sql/multi_mx_hide_shard_names.sql b/src/test/regress/sql/multi_mx_hide_shard_names.sql index 20068e0bb..b0636d3b6 100644 --- a/src/test/regress/sql/multi_mx_hide_shard_names.sql +++ b/src/test/regress/sql/multi_mx_hide_shard_names.sql @@ -245,10 +245,6 @@ RESET citus.enable_metadata_sync; -- the shards and indexes do not show up SELECT relname FROM pg_catalog.pg_class WHERE relnamespace = 'mx_hide_shard_names'::regnamespace ORDER BY relname; --- PG16 added one more backend type B_STANDALONE_BACKEND --- and also alphabetized the backend types, hence the orders changed --- Relevant PG16 commit: --- https://github.com/postgres/postgres/commit/0c679464a837079acc75ff1d45eaa83f79e05690 -- Relevant Pg17 commit: -- https://github.com/postgres/postgres/commit/067701f57758f9baed5bd9d868539738d77bfa92 -- Relevant PG18 commit: @@ -256,7 +252,6 @@ SELECT relname FROM pg_catalog.pg_class WHERE relnamespace = 'mx_hide_shard_name SHOW server_version \gset SELECT substring(:'server_version', '\d+')::int >= 18 AS server_version_ge_18 \gset SELECT substring(:'server_version', '\d+')::int >= 17 AS server_version_ge_17 \gset -SELECT substring(:'server_version', '\d+')::int >= 16 AS server_version_ge_16 \gset \if :server_version_ge_18 SELECT 1 AS client_backend \gset SELECT 5 AS bgworker \gset @@ -265,14 +260,10 @@ SELECT substring(:'server_version', '\d+')::int >= 16 AS server_version_ge_16 \g SELECT 1 AS client_backend \gset SELECT 4 AS bgworker \gset SELECT 5 AS walsender \gset -\elif :server_version_ge_16 +\else SELECT 4 AS client_backend \gset SELECT 5 AS bgworker \gset SELECT 12 AS walsender \gset -\else - SELECT 3 AS client_backend \gset - SELECT 4 AS bgworker \gset - SELECT 9 AS walsender \gset \endif -- say, we set it to bgworker diff --git a/src/test/regress/sql/multi_outer_join_columns.sql b/src/test/regress/sql/multi_outer_join_columns.sql index 8e49c4bcf..4bad9a82b 100644 --- a/src/test/regress/sql/multi_outer_join_columns.sql +++ b/src/test/regress/sql/multi_outer_join_columns.sql @@ -3,13 +3,6 @@ --- varnullingrels field of a VAR node may contain relids of join relations that can make the var --- NULL; in a rewritten distributed query without a join such relids do not have a meaning. --- This test has an alternative goldfile because of the following feature in Postgres 16: --- https://github.com/postgres/postgres/commit/1349d2790bf48a4de072931c722f39337e72055e --- - -SHOW server_version \gset -SELECT substring(:'server_version', '\d+')::int >= 16 AS server_version_ge_16; - CREATE SCHEMA outer_join_columns_testing; SET search_path to 'outer_join_columns_testing'; SET citus.next_shard_id TO 30070000; diff --git a/src/test/regress/sql/multi_schema_support.sql b/src/test/regress/sql/multi_schema_support.sql index 13be94857..4876093bc 100644 --- a/src/test/regress/sql/multi_schema_support.sql +++ b/src/test/regress/sql/multi_schema_support.sql @@ -295,8 +295,6 @@ SELECT * FROM nation_hash ORDER BY 1,2,3,4; SET search_path TO public; SHOW server_version \gset -SELECT substring(:'server_version', '\d+')::int >= 16 AS server_version_ge_16 -\gset SELECT substring(:'server_version', '\d+')::int >= 17 AS server_version_ge_17 \gset @@ -305,12 +303,10 @@ SELECT substring(:'server_version', '\d+')::int >= 17 AS server_version_ge_17 -- Relevant PG commit: -- https://github.com/postgres/postgres/commit/f696c0cd5f299f1b51e214efc55a22a782cc175d SELECT quote_ident((SELECT CASE WHEN datlocprovider='i' THEN datlocale ELSE datcollate END FROM pg_database WHERE datname = current_database())) as current_locale \gset -\elif :server_version_ge_16 +\else -- In PG16, read-only server settings lc_collate and lc_ctype are removed -- Relevant PG commit: b0f6c437160db640d4ea3e49398ebc3ba39d1982 SELECT quote_ident((SELECT CASE WHEN datlocprovider='i' THEN daticulocale ELSE datcollate END FROM pg_database WHERE datname = current_database())) as current_locale \gset -\else -SELECT quote_ident(current_setting('lc_collate')) as current_locale \gset \endif CREATE COLLATION test_schema_support.english (LOCALE = :current_locale); diff --git a/src/test/regress/sql/pg16.sql b/src/test/regress/sql/pg16.sql index bada3649c..cc46d79f2 100644 --- a/src/test/regress/sql/pg16.sql +++ b/src/test/regress/sql/pg16.sql @@ -1,14 +1,6 @@ -- -- PG16 -- -SHOW server_version \gset -SELECT substring(:'server_version', '\d+')::int >= 16 AS server_version_ge_16 -\gset -\if :server_version_ge_16 -\else -\q -\endif - CREATE SCHEMA pg16; SET search_path TO pg16; SET citus.next_shard_id TO 950000;