From dadc41b139c352811f5956892c02135905263347 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Fri, 10 Dec 2021 13:40:50 +0100 Subject: [PATCH 2/3] Add regression tests --- src/test/regress/expected/publication.out | 16 +++++++++++++++- src/test/regress/sql/publication.sql | 12 +++++++++++- src/test/subscription/t/021_column_filter.pl | 6 +----- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/test/regress/expected/publication.out b/src/test/regress/expected/publication.out index 5ac2d666a2..c6017c0514 100644 --- a/src/test/regress/expected/publication.out +++ b/src/test/regress/expected/publication.out @@ -165,7 +165,21 @@ Publications: regress_publication_user | t | t | t | f | f | f (1 row) -DROP TABLE testpub_tbl2; +CREATE TABLE testpub_tbl5 (a int PRIMARY KEY, b text, c text); +ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl5 (x, y, z); -- error +ERROR: cannot add relation "testpub_tbl5" to publication +DETAIL: Column filter must include REPLICA IDENTITY columns +ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl5 (a, x); -- error FIXME +ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl5 (b, c); -- error +ERROR: relation "testpub_tbl5" is already member of publication "testpub_fortable" +ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl5 (a, c); -- ok +ERROR: relation "testpub_tbl5" is already member of publication "testpub_fortable" +CREATE TABLE testpub_tbl6 (a int, b text, c text); +ALTER TABLE testpub_tbl6 REPLICA IDENTITY FULL; +ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl6 (a, b, c); -- error +ERROR: cannot add relation "testpub_tbl6" to publication +DETAIL: Cannot have column filter with REPLICA IDENTITY FULL +DROP TABLE testpub_tbl2, testpub_tbl5, testpub_tbl6; DROP PUBLICATION testpub_foralltables, testpub_fortable, testpub_forschema; CREATE TABLE testpub_tbl3 (a int); CREATE TABLE testpub_tbl3a (b text) INHERITS (testpub_tbl3); diff --git a/src/test/regress/sql/publication.sql b/src/test/regress/sql/publication.sql index 56dd358554..b2fd793c61 100644 --- a/src/test/regress/sql/publication.sql +++ b/src/test/regress/sql/publication.sql @@ -89,7 +89,17 @@ CREATE PUBLICATION testpub_for_tbl_schema FOR ALL TABLES IN SCHEMA pub_test, TAB \d+ testpub_tbl2 \dRp+ testpub_foralltables -DROP TABLE testpub_tbl2; +CREATE TABLE testpub_tbl5 (a int PRIMARY KEY, b text, c text); +ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl5 (x, y, z); -- error +ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl5 (a, x); -- error FIXME +ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl5 (b, c); -- error +ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl5 (a, c); -- ok + +CREATE TABLE testpub_tbl6 (a int, b text, c text); +ALTER TABLE testpub_tbl6 REPLICA IDENTITY FULL; +ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl6 (a, b, c); -- error + +DROP TABLE testpub_tbl2, testpub_tbl5, testpub_tbl6; DROP PUBLICATION testpub_foralltables, testpub_fortable, testpub_forschema; CREATE TABLE testpub_tbl3 (a int); diff --git a/src/test/subscription/t/021_column_filter.pl b/src/test/subscription/t/021_column_filter.pl index 7b52d4593d..02e05420f1 100644 --- a/src/test/subscription/t/021_column_filter.pl +++ b/src/test/subscription/t/021_column_filter.pl @@ -5,7 +5,7 @@ use warnings; use PostgreSQL::Test::Cluster; use PostgreSQL::Test::Utils; -use Test::More tests => 9; +use Test::More tests => 8; # setup @@ -130,10 +130,6 @@ is($result, qq(1|abc), 'update on column c is not replicated'); #Test error conditions -my ($psql_rc, $psql_out, $psql_err) = $node_publisher->psql('postgres', - "CREATE PUBLICATION pub2 FOR TABLE test_part(b)"); -like($psql_err, qr/Column filter must include REPLICA IDENTITY columns/, 'Error when column filter does not contain REPLICA IDENTITY'); - $node_publisher->safe_psql('postgres', "ALTER TABLE test_part DROP COLUMN b"); $result = $node_publisher->safe_psql('postgres', -- 2.34.1