diff --git a/src/backend/storage/lmgr/predicate.c b/src/backend/storage/lmgr/predicate.c
index e2d79e20b44f0c733e8ed16337e7fe26344fdb5a..d660ce5af78aefaa4dcb5576db722269603d5133 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;
 		}