diff options
-rw-r--r-- | src/backend/storage/lmgr/predicate.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/backend/storage/lmgr/predicate.c b/src/backend/storage/lmgr/predicate.c index e2d79e20b44..d660ce5af78 100644 --- a/src/backend/storage/lmgr/predicate.c +++ b/src/backend/storage/lmgr/predicate.c @@ -2535,9 +2535,12 @@ TransferPredicateLocksToNewTarget(const PREDICATELOCKTARGETTAG oldtargettag, if (!found) { SHMQueueInit(&(newtarget->predicateLocks)); - newpredlocktag.myTarget = newtarget; + newtarget->priorVersionOfRow = NULL; + newtarget->nextVersionOfRow = NULL; } + newpredlocktag.myTarget = newtarget; + oldpredlock = (PREDICATELOCK *) SHMQueueNext(&(oldtarget->predicateLocks), &(oldtarget->predicateLocks), @@ -2586,10 +2589,14 @@ TransferPredicateLocksToNewTarget(const PREDICATELOCKTARGETTAG oldtargettag, outOfShmem = true; goto exit; } - SHMQueueInsertBefore(&(newtarget->predicateLocks), - &(newpredlock->targetLink)); - SHMQueueInsertBefore(&(newpredlocktag.myXact->predicateLocks), - &(newpredlock->xactLink)); + if (!found) + { + SHMQueueInsertBefore(&(newtarget->predicateLocks), + &(newpredlock->targetLink)); + SHMQueueInsertBefore(&(newpredlocktag.myXact->predicateLocks), + &(newpredlock->xactLink)); + newpredlock->commitSeqNo = InvalidSerCommitSeqNo; + } oldpredlock = nextpredlock; } |