*** 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;
  		}
