[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

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