[Patch] Fix check_pub_rdt bypass when origin is set in same ALTER SUBSCRIPTION
SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com>
From: SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com>
To: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-05-26T22:49:55Z
Lists: pgsql-hackers
Attachments
- 0001-Fix-check_pub_rdt-bypass-when-origin-is-set-in-same-.patch (application/octet-stream)
- 0002-Add-TAP-test-for-check_pub_rdt-bypass-fix.patch (application/octet-stream)
HI hackers, When ALTER SUBSCRIPTION SET (retain_dead_tuples = true, origin = 'none') is used, the publisher version/recovery check was bypassed because the origin handling unconditionally overwrote check_pub_rdt to false. Fix by using |= instead of = so that the flag set by retain_dead_tuples cannot be cleared by a subsequent origin assignment in the same command. Attached two patches where 0001 is the code fix and 0002 is a tap fix test to reproduce the problem. I didn't fully polish the test, intended only for the reviewers to reproduce the problem with a standby setup. Let me know if you would like to include the test. Thanks, Satya