]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Fix logical decoding regression tests to correctly check slot existence.
authorFujii Masao <fujii@postgresql.org>
Fri, 4 Apr 2025 04:12:17 +0000 (13:12 +0900)
committerFujii Masao <fujii@postgresql.org>
Fri, 4 Apr 2025 04:12:17 +0000 (13:12 +0900)
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
src/test/recovery/t/010_logical_decoding_timelines.pl

index f523d8f59338f30f5ec230caa9a03e968670cda5..840cacd73df40602c4c65048448d238dd88db209 100644 (file)
@@ -144,8 +144,8 @@ SKIP:
        is($node_master->psql('postgres', 'DROP DATABASE otherdb'),
                3, 'dropping a DB with active logical slots fails');
        $pg_recvlogical->kill_kill;
-       is($node_master->slot('otherdb_slot')->{'slot_name'},
-               undef, 'logical slot still exists');
+       is($node_master->slot('otherdb_slot')->{'plugin'},
+               'test_decoding', 'logical slot still exists');
 }
 
 $node_master->poll_query_until('otherdb',
@@ -154,8 +154,8 @@ $node_master->poll_query_until('otherdb',
 
 is($node_master->psql('postgres', 'DROP DATABASE otherdb'),
        0, 'dropping a DB with inactive logical slots succeeds');
-is($node_master->slot('otherdb_slot')->{'slot_name'},
-       undef, 'logical slot was actually dropped with DB');
+is($node_master->slot('otherdb_slot')->{'plugin'},
+       '', 'logical slot was actually dropped with DB');
 
 # Test logical slot advancing and its durability.
 my $logical_slot = 'logical_slot';
index 4c8efb3bafc5fcc8a56e949b74e0e169cd4dfbf8..b72fe7c4f5977b6a7a945591f6ed2730f357be99 100644 (file)
@@ -90,8 +90,8 @@ is( $node_replica->safe_psql(
                'postgres', q[SELECT 1 FROM pg_database WHERE datname = 'dropme']),
        '',
        'dropped DB dropme on standby');
-is($node_master->slot('dropme_slot')->{'slot_name'},
-       undef, 'logical slot was actually dropped on standby');
+is($node_master->slot('dropme_slot')->{'plugin'},
+       '', 'logical slot was actually dropped on standby');
 
 # Back to testing failover...
 $node_master->safe_psql('postgres',