Improve test in 009_matviews.pl.
authorAmit Kapila <akapila@postgresql.org>
Mon, 27 Oct 2025 03:52:39 +0000 (03:52 +0000)
committerAmit Kapila <akapila@postgresql.org>
Mon, 27 Oct 2025 03:52:39 +0000 (03:52 +0000)
Ensure that the target table on the subscriber exists before executing any
DML intended for replication.

Currently, if the table is missing, the replication logic keeps retrying
until the table is eventually created by the test. Although this behaviour
does not cause test failures, since the table is created after the INSERT
is published and replication eventually succeeds, however, it introduces
unnecessary looping and delays.

Author: Grem Snoort <grem.snoort@gmail.com>
Discussion: https://postgr.es/m/CANV9Qw5HD7=Fp4nox2O7DoVctHoabRRVW9Soo4A=QipqW5B=Tg@mail.gmail.com

src/test/subscription/t/009_matviews.pl

index 9316fd1bb6d9510848e7f655bc823fa057ef367b..2389680af13ae401aa5e37dad67ce7afa69f2a3b 100644 (file)
@@ -18,20 +18,20 @@ $node_subscriber->start;
 
 my $publisher_connstr = $node_publisher->connstr . ' dbname=postgres';
 
+$node_publisher->safe_psql('postgres',
+       q{CREATE TABLE test1 (a int PRIMARY KEY, b text)});
+$node_subscriber->safe_psql('postgres',
+       q{CREATE TABLE test1 (a int PRIMARY KEY, b text);});
+
 $node_publisher->safe_psql('postgres',
        "CREATE PUBLICATION mypub FOR ALL TABLES;");
 $node_subscriber->safe_psql('postgres',
        "CREATE SUBSCRIPTION mysub CONNECTION '$publisher_connstr' PUBLICATION mypub;"
 );
 
-$node_publisher->safe_psql('postgres',
-       q{CREATE TABLE test1 (a int PRIMARY KEY, b text)});
 $node_publisher->safe_psql('postgres',
        q{INSERT INTO test1 (a, b) VALUES (1, 'one'), (2, 'two');});
 
-$node_subscriber->safe_psql('postgres',
-       q{CREATE TABLE test1 (a int PRIMARY KEY, b text);});
-
 $node_publisher->wait_for_catchup('mysub');
 
 # Materialized views are not supported by logical replication, but