From 7ba28dea6800359ae631c1a132f8f6c6d418548b Mon Sep 17 00:00:00 2001 From: Euler Taveira Date: Fri, 27 May 2022 14:43:10 -0300 Subject: [PATCH v1 2/2] test: heap rewrite for materialized view in logical replication --- src/test/subscription/t/006_rewrite.pl | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/test/subscription/t/006_rewrite.pl b/src/test/subscription/t/006_rewrite.pl index 5e3211aefa..e5e0fdabe7 100644 --- a/src/test/subscription/t/006_rewrite.pl +++ b/src/test/subscription/t/006_rewrite.pl @@ -3,7 +3,8 @@ use strict; use warnings; use PostgresNode; use TestLib; -use Test::More tests => 2; +use Time::HiRes qw(usleep); +use Test::More tests => 3; sub wait_for_caught_up { @@ -26,6 +27,13 @@ my $ddl = "CREATE TABLE test1 (a int, b text);"; $node_publisher->safe_psql('postgres', $ddl); $node_subscriber->safe_psql('postgres', $ddl); +$ddl = "CREATE TABLE test2 (a int, b text);"; +$node_publisher->safe_psql('postgres', $ddl); +$node_subscriber->safe_psql('postgres', $ddl); + +$node_publisher->safe_psql('postgres', q{INSERT INTO test2 (a, b) VALUES (10, 'ten'), (20, 'twenty');}); +$node_publisher->safe_psql('postgres', 'CREATE MATERIALIZED VIEW test3 AS SELECT a, b FROM test2;'); + my $publisher_connstr = $node_publisher->connstr . ' dbname=postgres'; my $appname = 'encoding_test'; @@ -69,5 +77,21 @@ is($node_subscriber->safe_psql('postgres', q{SELECT a, b, c FROM test1}), 3|three|33), 'data replicated to subscriber'); +$node_publisher->safe_psql('postgres', 'REFRESH MATERIALIZED VIEW test3;'); + +my $max_attempts = 2 * $TestLib::timeout_default; +my $attempts = 0; +my $errmsg = qr/logical replication target relation.*does not exist/; +{ + while ($attempts < $max_attempts) + { + last if (slurp_file($node_subscriber->logfile) =~ $errmsg); + + usleep(100_000); + $attempts++; + } +} +is($attempts, $max_attempts, 'heap rewrite for materialized view on subscriber'); + $node_subscriber->stop; $node_publisher->stop; -- 2.30.2