postgres.git / summary / log / commit / refs

commit    adffcab923e1cd3d2a0fd0b21eb4a91f080065a3
Author:   Masahiko Sawada <msawada@postgresql.org>
Date:     Thu Oct 01 12:52:15 2026 +0000

    Stabilize repack_decode isolation test.
    
    Commit 7164dcb66532 added the repack_decode isolation test, whose
    s1_decode step counts every change decoded from the slot. A concurrent
    autovacuum transaction that modifies only system catalogs is decoded
    as an empty BEGIN/COMMIT pair, so the count could come out larger
    than expected.
    
    Fix by passing skip-empty-xacts to test_decoding. We pass it, along
    with include-xids=0, to s1_decode_updates as well so that both steps
    use the same options for consistency, though that step shows only
    UPDATE lines and wasn't affected.
    
    Per buildfarm animal skink.
    
    Reported-by: Alexander Lakhin <exclusion@gmail.com>
    Discussion: https://postgr.es/m/d704cde4-b1f2-48dc-8c5e-659d1128d286@gmail.com
    Backpatch-through: 19


src/test/modules/injection_points/expected/repack_decode.out | 8 +++++--- src/test/modules/injection_points/specs/repack_decode.spec | 6 ++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/test/modules/injection_points/expected/repack_decode.out b/src/test/modules/injection_points/expected/repack_decode.out index b766ed544fe..f6c3d862457 100644 --- a/src/test/modules/injection_points/expected/repack_decode.out +++ b/src/test/modules/injection_points/expected/repack_decode.out @@ -22,11 +22,12 @@ injection_points_wakeup step s1_wait_before_lock: <... completed> step s1_decode: - SELECT count(*) FROM pg_logical_slot_peek_changes('s', NULL, NULL, 'include-rewrites', '1'); + SELECT count(*) FROM pg_logical_slot_peek_changes('s', NULL, NULL, 'include-rewrites', '1', + 'skip-empty-xacts', '1', 'include-xids', '0'); count ----- - 8 + 6 (1 row) injection_points_detach @@ -62,7 +63,8 @@ injection_points_wakeup step s1_wait_before_lock: <... completed> step s1_decode_updates: - SELECT data FROM pg_logical_slot_peek_changes('s', NULL, NULL, 'include-rewrites', '1') + SELECT data FROM pg_logical_slot_peek_changes('s', NULL, NULL, 'include-rewrites', '1', + 'skip-empty-xacts', '1', 'include-xids', '0') WHERE data LIKE '%UPDATE%'; data diff --git a/src/test/modules/injection_points/specs/repack_decode.spec b/src/test/modules/injection_points/specs/repack_decode.spec index c3efd9987b3..04f0df83a0a 100644 --- a/src/test/modules/injection_points/specs/repack_decode.spec +++ b/src/test/modules/injection_points/specs/repack_decode.spec @@ -40,13 +40,15 @@ step s1_wait_before_lock } step s1_decode { - SELECT count(*) FROM pg_logical_slot_peek_changes('s', NULL, NULL, 'include-rewrites', '1'); + SELECT count(*) FROM pg_logical_slot_peek_changes('s', NULL, NULL, 'include-rewrites', '1', + 'skip-empty-xacts', '1', 'include-xids', '0'); } # Show the decoded updates. The row loaded by setup carries a random TOAST # value, so only the updates are stable enough to display. step s1_decode_updates { - SELECT data FROM pg_logical_slot_peek_changes('s', NULL, NULL, 'include-rewrites', '1') + SELECT data FROM pg_logical_slot_peek_changes('s', NULL, NULL, 'include-rewrites', '1', + 'skip-empty-xacts', '1', 'include-xids', '0') WHERE data LIKE '%UPDATE%'; } teardown [parent: 45277ca0d1cb]