mirror of
https://github.com/postgres/postgres.git
synced 2026-06-09 00:32:10 -04:00
Fix publisher retain_dead_tuples check when also changing origin.
In AlterSubscription(), when the SET clause includes both retain_dead_tuples and origin options, the origin branch was using assignment (=) rather than bitwise-or assignment (|=) when setting check_pub_rdt. This meant that if retain_dead_tuples had already set the flag to true in the same command, the origin branch would silently overwrite it. As a result, the publisher-side retain_dead_tuples check could be incorrectly skipped. Fix by changing the assignment to |= so that the flag accumulates across both option branches within the same ALTER SUBSCRIPTION command. Author: SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com> Reviewed-by: Zhijie Hou <houzj.fnst@fujitsu.com> Reviewed-by: Amit Kapila <amit.kapila16@gmail.com> Discussion: https://postgr.es/m/CAHg+QDfe7WPOhVGKzv83ZB+BmXM88r=KPQn1sa_ZXMMChcNo=A@mail.gmail.com
This commit is contained in:
parent
eb77a52199
commit
75dcc63dac
1 changed files with 4 additions and 2 deletions
|
|
@ -1748,9 +1748,11 @@ AlterSubscription(ParseState *pstate, AlterSubscriptionStmt *stmt,
|
|||
/*
|
||||
* Check if changes from different origins may be received
|
||||
* from the publisher when the origin is changed to ANY
|
||||
* and retain_dead_tuples is enabled.
|
||||
* and retain_dead_tuples is enabled. Use |= so that we
|
||||
* don't clear the flag already set when
|
||||
* retain_dead_tuples was changed in the same command.
|
||||
*/
|
||||
check_pub_rdt = retain_dead_tuples &&
|
||||
check_pub_rdt |= retain_dead_tuples &&
|
||||
pg_strcasecmp(opts.origin, LOGICALREP_ORIGIN_ANY) == 0;
|
||||
|
||||
origin = opts.origin;
|
||||
|
|
|
|||
Loading…
Reference in a new issue