*** a/src/backend/storage/lmgr/predicate.c --- b/src/backend/storage/lmgr/predicate.c *************** *** 2535,2543 **** TransferPredicateLocksToNewTarget(const PREDICATELOCKTARGETTAG oldtargettag, if (!found) { SHMQueueInit(&(newtarget->predicateLocks)); ! newpredlocktag.myTarget = newtarget; } oldpredlock = (PREDICATELOCK *) SHMQueueNext(&(oldtarget->predicateLocks), &(oldtarget->predicateLocks), --- 2535,2546 ---- if (!found) { SHMQueueInit(&(newtarget->predicateLocks)); ! newtarget->priorVersionOfRow = NULL; ! newtarget->nextVersionOfRow = NULL; } + newpredlocktag.myTarget = newtarget; + oldpredlock = (PREDICATELOCK *) SHMQueueNext(&(oldtarget->predicateLocks), &(oldtarget->predicateLocks), *************** *** 2586,2595 **** TransferPredicateLocksToNewTarget(const PREDICATELOCKTARGETTAG oldtargettag, outOfShmem = true; goto exit; } ! SHMQueueInsertBefore(&(newtarget->predicateLocks), ! &(newpredlock->targetLink)); ! SHMQueueInsertBefore(&(newpredlocktag.myXact->predicateLocks), ! &(newpredlock->xactLink)); oldpredlock = nextpredlock; } --- 2589,2602 ---- outOfShmem = true; goto exit; } ! if (!found) ! { ! SHMQueueInsertBefore(&(newtarget->predicateLocks), ! &(newpredlock->targetLink)); ! SHMQueueInsertBefore(&(newpredlocktag.myXact->predicateLocks), ! &(newpredlock->xactLink)); ! newpredlock->commitSeqNo = InvalidSerCommitSeqNo; ! } oldpredlock = nextpredlock; }