postgres.git / summary / log / commit / refs

commit    bc485fce52ebaca3f2497f1f490dc9d42505946a
Author:   Fujii Masao <fujii@postgresql.org>
Date:     Fri Apr 04 04:09:06 2025 +0000
First released in: 18.0, 13.21, 14.18, 15.13, 16.9, 17.5

    Fix logical decoding regression tests to correctly check slot existence.
    
    The regression tests for logical decoding verify whether a logical slot
    exists or has been dropped. Previously, these tests attempted to
    retrieve "slot_name" from the result of slot(), but since "slot_name" was
    not included in the result, slot()->{'slot_name'} always returned undef,
    leading to incorrect behavior.
    
    This commit fixes the issue by checking the "plugin" field in the result
    of slot() instead, ensuring the tests properly verify slot existence.
    
    Back-patch to all supported versions.
    
    Author: Hayato Kuroda <kuroda.hayato@fujitsu.com>
    Reviewed-by: Fujii Masao <masao.fujii@gmail.com>
    Discussion: https://postgr.es/m/OSCPR01MB149667EC4E738769CA80B7EA5F5AE2@OSCPR01MB14966.jpnprd01.prod.outlook.com
    Backpatch-through: 13


src/test/recovery/t/006_logical_decoding.pl | 8 ++++---- src/test/recovery/t/010_logical_decoding_timelines.pl | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/test/recovery/t/006_logical_decoding.pl b/src/test/recovery/t/006_logical_decoding.pl index 5025d65b1b4..96210b8bab7 100644 --- a/src/test/recovery/t/006_logical_decoding.pl +++ b/src/test/recovery/t/006_logical_decoding.pl @@ -158,8 +158,8 @@ SKIP: is($node_primary->psql('postgres', 'DROP DATABASE otherdb'), 3, 'dropping a DB with active logical slots fails'); $pg_recvlogical->kill_kill; - is($node_primary->slot('otherdb_slot')->{'slot_name'}, - undef, 'logical slot still exists'); + is($node_primary->slot('otherdb_slot')->{'plugin'}, + 'test_decoding', 'logical slot still exists'); } $node_primary->poll_query_until('otherdb', @@ -168,8 +168,8 @@ $node_primary->poll_query_until('otherdb', is($node_primary->psql('postgres', 'DROP DATABASE otherdb'), 0, 'dropping a DB with inactive logical slots succeeds'); -is($node_primary->slot('otherdb_slot')->{'slot_name'}, - undef, 'logical slot was actually dropped with DB'); +is($node_primary->slot('otherdb_slot')->{'plugin'}, + '', 'logical slot was actually dropped with DB'); # Test logical slot advancing and its durability. my $logical_slot = 'logical_slot'; diff --git a/src/test/recovery/t/010_logical_decoding_timelines.pl b/src/test/recovery/t/010_logical_decoding_timelines.pl index 6fbbeedde3b..96a3ccca0da 100644 --- a/src/test/recovery/t/010_logical_decoding_timelines.pl +++ b/src/test/recovery/t/010_logical_decoding_timelines.pl @@ -94,8 +94,8 @@ is( $node_replica->safe_psql( 'postgres', q[SELECT 1 FROM pg_database WHERE datname = 'dropme']), '', 'dropped DB dropme on standby'); -is($node_primary->slot('dropme_slot')->{'slot_name'}, - undef, 'logical slot was actually dropped on standby'); +is($node_primary->slot('dropme_slot')->{'plugin'}, + '', 'logical slot was actually dropped on standby'); # Back to testing failover... $node_primary->safe_psql('postgres', [parent: 87e8599e046f]