Skip to content

Commit

Permalink
PG17 regress sanity: fix diffs in multi_router_planner,
Browse files Browse the repository at this point in the history
multi_router_planner_fast_path and query_single_shard_table

Restore the expected DEBUG error messages from the router planner.
In the case of query_single_shard_table the diffs are because of
PG17's ability to pull up correlated ANY subqueries (*). The fix
is to inhibit pull up with a volatile function.

In the case of multi_router_planner and multi_router_planner_fast_path
the diffs are because of PG17's ability to remove redundant IS (NOT)
NULL expressions (**). The fix is to adjust the table definition so
the column used for distribution is not marked NOT NULL.

Finally, add a rule to normalize.sed to ignore additional DEBUG
logging by CREATE MATERIALIZED VIEW (postgre commit b4da732fd64).
This was also impacting regress test multi_mx_router_planner.

(*) https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=9f1337639
(**) https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=b262ad440
  • Loading branch information
colm-mchugh committed Dec 5, 2024
1 parent c396ce6 commit f4e9d99
Show file tree
Hide file tree
Showing 7 changed files with 19 additions and 13 deletions.
7 changes: 7 additions & 0 deletions src/test/regress/bin/normalize.sed
Original file line number Diff line number Diff line change
Expand Up @@ -319,3 +319,10 @@ s/COPY DEFAULT only available using COPY FROM/COPY DEFAULT cannot be used with C
s/COPY delimiter must not appear in the DEFAULT specification/COPY delimiter character must not appear in the DEFAULT specification/

#endif /* PG_VERSION_NUM < PG_VERSION_17 */

# pg17 change: this is a rule that ignores additional DEBUG logging
# for CREATE MATERIALIZED VIEW (commit b4da732fd64). This could be
# changed to a normalization rule when 17 becomes the minimum
# supported Postgres version.

/DEBUG: drop auto-cascades to type [a-zA-Z_]*.pg_temp_[0-9]*/d
2 changes: 1 addition & 1 deletion src/test/regress/expected/multi_router_planner.out
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ CREATE SCHEMA multi_router_planner;
SET search_path TO multi_router_planner;
CREATE TABLE articles_hash (
id bigint NOT NULL,
author_id bigint NOT NULL,
author_id bigint,
title varchar(20) NOT NULL,
word_count integer
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ SET citus.enable_fast_path_router_planner TO true;
-- ===================================================================
CREATE TABLE articles_hash (
id bigint NOT NULL,
author_id bigint NOT NULL,
author_id bigint,
title varchar(20) NOT NULL,
word_count integer
);
Expand Down
8 changes: 4 additions & 4 deletions src/test/regress/expected/query_single_shard_table.out
Original file line number Diff line number Diff line change
Expand Up @@ -1183,7 +1183,7 @@ DEBUG: Local tables cannot be used in distributed queries.
DEBUG: skipping recursive planning for the subquery since it contains references to outer queries
ERROR: direct joins between distributed and local tables are not supported
SELECT COUNT(*) FROM nullkey_c1_t1 t1
WHERE t1.b IN (
WHERE t1.b + random() IN (
SELECT b+1 FROM citus_local_table t2 WHERE t2.b = t1.a
);
DEBUG: router planner does not support queries that reference non-colocated distributed tables
Expand Down Expand Up @@ -1258,7 +1258,7 @@ DEBUG: Local tables cannot be used in distributed queries.
DEBUG: skipping recursive planning for the subquery since it contains references to outer queries
ERROR: direct joins between distributed and local tables are not supported
SELECT COUNT(*) FROM citus_local_table t1
WHERE t1.b IN (
WHERE t1.b + random() IN (
SELECT b+1 FROM nullkey_c1_t1 t2 WHERE t2.b = t1.a
);
DEBUG: router planner does not support queries that reference non-colocated distributed tables
Expand Down Expand Up @@ -1312,7 +1312,7 @@ DEBUG: skipping recursive planning for the subquery since it contains reference
ERROR: direct joins between distributed and local tables are not supported
HINT: Use CTE's or subqueries to select from local tables and use them in joins
SELECT COUNT(*) FROM nullkey_c1_t1 t1
WHERE t1.b IN (
WHERE t1.b + random() IN (
SELECT b+1 FROM postgres_local_table t2 WHERE t2.b = t1.a
);
DEBUG: found no worker with all shard placements
Expand Down Expand Up @@ -1344,7 +1344,7 @@ DEBUG: skipping recursive planning for the subquery since it contains reference
ERROR: direct joins between distributed and local tables are not supported
HINT: Use CTE's or subqueries to select from local tables and use them in joins
SELECT COUNT(*) FROM postgres_local_table t1
WHERE t1.b IN (
WHERE t1.b + random() IN (
SELECT b+1 FROM nullkey_c1_t1 t2 WHERE t2.b = t1.a
);
DEBUG: found no worker with all shard placements
Expand Down
2 changes: 1 addition & 1 deletion src/test/regress/sql/multi_router_planner.sql
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ SET search_path TO multi_router_planner;

CREATE TABLE articles_hash (
id bigint NOT NULL,
author_id bigint NOT NULL,
author_id bigint,
title varchar(20) NOT NULL,
word_count integer
);
Expand Down
3 changes: 1 addition & 2 deletions src/test/regress/sql/multi_router_planner_fast_path.sql
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ SET citus.enable_fast_path_router_planner TO true;

CREATE TABLE articles_hash (
id bigint NOT NULL,
author_id bigint NOT NULL,
author_id bigint,
title varchar(20) NOT NULL,
word_count integer
);
Expand Down Expand Up @@ -803,7 +803,6 @@ CREATE MATERIALIZED VIEW mv_articles_hash_empty AS
SELECT * FROM articles_hash WHERE author_id = 1;
SELECT * FROM mv_articles_hash_empty;


SELECT id
FROM articles_hash
WHERE author_id = 1;
Expand Down
8 changes: 4 additions & 4 deletions src/test/regress/sql/query_single_shard_table.sql
Original file line number Diff line number Diff line change
Expand Up @@ -502,7 +502,7 @@ WHERE NOT EXISTS (
);

SELECT COUNT(*) FROM nullkey_c1_t1 t1
WHERE t1.b IN (
WHERE t1.b + random() IN (
SELECT b+1 FROM citus_local_table t2 WHERE t2.b = t1.a
);

Expand Down Expand Up @@ -543,7 +543,7 @@ WHERE EXISTS (
);

SELECT COUNT(*) FROM citus_local_table t1
WHERE t1.b IN (
WHERE t1.b + random() IN (
SELECT b+1 FROM nullkey_c1_t1 t2 WHERE t2.b = t1.a
);

Expand Down Expand Up @@ -573,7 +573,7 @@ WHERE NOT EXISTS (
);

SELECT COUNT(*) FROM nullkey_c1_t1 t1
WHERE t1.b IN (
WHERE t1.b + random() IN (
SELECT b+1 FROM postgres_local_table t2 WHERE t2.b = t1.a
);

Expand All @@ -593,7 +593,7 @@ WHERE EXISTS (
);

SELECT COUNT(*) FROM postgres_local_table t1
WHERE t1.b IN (
WHERE t1.b + random() IN (
SELECT b+1 FROM nullkey_c1_t1 t2 WHERE t2.b = t1.a
);

Expand Down

0 comments on commit f4e9d99

Please sign in to comment.