From 0068725feb106a1573976a4adf141d117f6759ea Mon Sep 17 00:00:00 2001 From: Shi Yu Date: Mon, 9 Jan 2023 16:53:07 +0800 Subject: [PATCH v2 2/2] Tests for checking column list restriction --- src/test/subscription/t/031_column_list.pl | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/test/subscription/t/031_column_list.pl b/src/test/subscription/t/031_column_list.pl index 8835ab30ff..ee30db0d95 100644 --- a/src/test/subscription/t/031_column_list.pl +++ b/src/test/subscription/t/031_column_list.pl @@ -1184,6 +1184,51 @@ $result = $node_publisher->safe_psql( is( $result, qq(t t), 'check the number of columns in the old tuple'); +# TEST: With a table included in multiple publications with the same column +# list, it works fine. Generated columns and dropped columns are not considered. +$node_publisher->safe_psql( + 'postgres', qq( + CREATE TABLE test_mix_4 (a int PRIMARY KEY, b int, c int, d int GENERATED ALWAYS AS (a + 1) STORED); + ALTER TABLE test_mix_4 DROP COLUMN c; + + CREATE PUBLICATION pub_mix_7 FOR TABLE test_mix_4 (a, b); + CREATE PUBLICATION pub_mix_8 FOR TABLE test_mix_4; + + -- initial data + INSERT INTO test_mix_4 VALUES (1, 2); +)); + +$node_subscriber->safe_psql( + 'postgres', qq( + DROP SUBSCRIPTION sub1; + CREATE TABLE test_mix_4 (a int PRIMARY KEY, b int, c int, d int); +)); + +$node_subscriber->safe_psql( + 'postgres', qq( + CREATE SUBSCRIPTION sub1 CONNECTION '$publisher_connstr' PUBLICATION pub_mix_7, pub_mix_8; +)); + +$node_subscriber->wait_for_subscription_sync; + +is( $node_subscriber->safe_psql( + 'postgres', "SELECT * FROM test_mix_4 ORDER BY a"), + qq(1|2||), + 'initial synchronization with multiple publications with the same column list' +); + +$node_publisher->safe_psql( + 'postgres', qq( + INSERT INTO test_mix_4 VALUES (3, 4); +)); + +$node_publisher->wait_for_catchup('sub1'); + +is( $node_subscriber->safe_psql( + 'postgres', "SELECT * FROM test_mix_4 ORDER BY a"), + qq(1|2|| +3|4||), + 'replication with multiple publications with the same column list'); # TEST: With a table included in multiple publications with different column # lists, we should catch the error when creating the subscription. -- 2.31.1