PG17 regress sanity: fix diffs in multi_router_planner,

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 (postgres 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
pull/7769/head
Colm McHugh 2024-11-25 18:23:58 +00:00
parent 90d76e8097
commit 007dab8fba
7 changed files with 19 additions and 13 deletions

View File

@ -324,3 +324,10 @@ s/COPY delimiter must not appear in the DEFAULT specification/COPY delimiter cha
# we add them back for pg15,pg16 compatibility
# e.g. change CHECK other_col >= 100 to CHECK (other_col >= 100)
s/\| CHECK ([a-zA-Z])(.*)/| CHECK \(\1\2\)/g
# 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

View File

@ -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
);

View File

@ -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
);

View File

@ -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
@ -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
@ -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
@ -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

View File

@ -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
);

View File

@ -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
);
@ -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;

View File

@ -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
);
@ -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
);
@ -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
);
@ -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
);