From da36d6161e79b1fcdbf5d69e745143e5a7b9f9ac Mon Sep 17 00:00:00 2001 From: Shveta Malik Date: Tue, 19 Dec 2023 16:31:49 +0530 Subject: [PATCH v50 3/3] Additional test to validate the restart_lsn of synced slot --- .../t/050_standby_failover_slots_sync.pl | 36 +++++++++++++++++-- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/src/test/recovery/t/050_standby_failover_slots_sync.pl b/src/test/recovery/t/050_standby_failover_slots_sync.pl index 277fc2e079..4b65befc65 100644 --- a/src/test/recovery/t/050_standby_failover_slots_sync.pl +++ b/src/test/recovery/t/050_standby_failover_slots_sync.pl @@ -357,6 +357,37 @@ is($standby1->safe_psql('postgres', "t|r", 'logical slot has failover as true and sync_state as ready on standby'); +################################################## +# Test to confirm that restart_lsn and confirmed_flush_lsn of the logical slot +# on the primary is synced to the standby +################################################## + +# Truncate table on primary +$primary->safe_psql('postgres', + "TRUNCATE TABLE tab_int;"); + +# Get the restart_lsn for the logical slot lsub1_slot on the primary +my $primary_restart_lsn = $primary->safe_psql('postgres', + "SELECT restart_lsn from pg_replication_slots WHERE slot_name = 'lsub1_slot';"); + +# Get the confirmed_flush_lsn for the logical slot lsub1_slot on the primary +my $primary_flush_lsn = $primary->safe_psql('postgres', + "SELECT confirmed_flush_lsn from pg_replication_slots WHERE slot_name = 'lsub1_slot';"); + +# Insert data on the primary +$primary->safe_psql('postgres', + "INSERT INTO tab_int SELECT generate_series(1, 10);"); + +# Confirm that restart_lsn of lsub1_slot slot is synced to the standby +$result = $standby1->safe_psql('postgres', + qq[SELECT '$primary_restart_lsn' <= restart_lsn from pg_replication_slots WHERE slot_name = 'lsub1_slot';]); +is($result, 't', 'restart_lsn of slot lsub1_slot synced to standby'); + +# Confirm that confirmed_flush_lsn of lsub1_slot slot is synced to the standby +$result = $standby1->safe_psql('postgres', + qq[SELECT '$primary_flush_lsn' <= confirmed_flush_lsn from pg_replication_slots WHERE slot_name = 'lsub1_slot';]); +is($result, 't', 'confirmed_flush_lsn of slot lsub1_slot synced to the standby'); + ################################################## # Test that a synchronized slot can not be decoded, altered and dropped by the user ################################################## @@ -432,14 +463,13 @@ is($standby1->safe_psql('postgres', 'synced slot retained on the new primary'); # Insert data on the new primary -$primary_row_count = 10; $standby1->safe_psql('postgres', - "INSERT INTO tab_int SELECT generate_series(1, $primary_row_count);"); + "INSERT INTO tab_int SELECT generate_series(11, 20);"); $standby1->wait_for_catchup('regress_mysub1'); # Confirm that data in tab_int replicated on subscriber is( $subscriber1->safe_psql('postgres', q{SELECT count(*) FROM tab_int;}), - "$primary_row_count", + "20", 'data replicated from the new primary'); done_testing(); -- 2.34.1