diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2020-02-03 18:59:12 -0300 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2020-02-03 18:59:12 -0300 |
commit | 1c7a0b387d18c517d45e2f6ec7d8b7d1b2d5fe13 (patch) | |
tree | a4227d462e5791e710e1fd36500e869108085c8e /src/backend/executor/execReplication.c | |
parent | f1f10a1ba9e17e606a7b217ccccdd3cc4d8cb771 (diff) | |
download | postgresql-1c7a0b387d18c517d45e2f6ec7d8b7d1b2d5fe13.tar.gz postgresql-1c7a0b387d18c517d45e2f6ec7d8b7d1b2d5fe13.zip |
Add missing break out seqscan loop in logical replication
When replica identity is FULL (an admittedly unusual case), the loop
that searches for tuples in execReplication.c didn't stop scanning the
table when once a matching tuple was found. Add the missing 'break'.
Note slight behavior change: we now return the first matching tuple
rather than the last one. They are supposed to be indistinguishable
anyway, so this shouldn't matter.
Author: Konstantin Knizhnik
Discussion: https://postgr.es/m/379743f6-ae91-b866-f7a2-5624e6d2b0a4@postgrespro.ru
Diffstat (limited to 'src/backend/executor/execReplication.c')
-rw-r--r-- | src/backend/executor/execReplication.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/backend/executor/execReplication.c b/src/backend/executor/execReplication.c index 582b0cb0175..30cba89da7e 100644 --- a/src/backend/executor/execReplication.c +++ b/src/backend/executor/execReplication.c @@ -327,6 +327,9 @@ retry: XactLockTableWait(xwait, NULL, NULL, XLTW_None); goto retry; } + + /* Found our tuple and it's not locked */ + break; } /* Found tuple, try to lock it in the lockmode. */ |