@@ -2618,7 +2618,8 @@ heap_delete(Relation relation, ItemPointer tid,
26182618 HEAP_XMAX_IS_LOCKED_ONLY (tp .t_data -> t_infomask ) ||
26192619 HeapTupleHeaderIsOnlyLocked (tp .t_data ))
26202620 result = TM_Ok ;
2621- else if (!ItemPointerEquals (& tp .t_self , & tp .t_data -> t_ctid ))
2621+ else if (!ItemPointerEquals (& tp .t_self , & tp .t_data -> t_ctid ) ||
2622+ HeapTupleHeaderIndicatesMovedPartitions (tp .t_data ))
26222623 result = TM_Updated ;
26232624 else
26242625 result = TM_Deleted ;
@@ -3247,7 +3248,8 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
32473248
32483249 if (can_continue )
32493250 result = TM_Ok ;
3250- else if (!ItemPointerEquals (& oldtup .t_self , & oldtup .t_data -> t_ctid ))
3251+ else if (!ItemPointerEquals (& oldtup .t_self , & oldtup .t_data -> t_ctid ) ||
3252+ HeapTupleHeaderIndicatesMovedPartitions (oldtup .t_data ))
32513253 result = TM_Updated ;
32523254 else
32533255 result = TM_Deleted ;
@@ -4483,7 +4485,8 @@ heap_lock_tuple(Relation relation, HeapTuple tuple,
44834485 HEAP_XMAX_IS_LOCKED_ONLY (tuple -> t_data -> t_infomask ) ||
44844486 HeapTupleHeaderIsOnlyLocked (tuple -> t_data ))
44854487 result = TM_Ok ;
4486- else if (!ItemPointerEquals (& tuple -> t_self , & tuple -> t_data -> t_ctid ))
4488+ else if (!ItemPointerEquals (& tuple -> t_self , & tuple -> t_data -> t_ctid ) ||
4489+ HeapTupleHeaderIndicatesMovedPartitions (tuple -> t_data ))
44874490 result = TM_Updated ;
44884491 else
44894492 result = TM_Deleted ;
@@ -5056,7 +5059,8 @@ test_lockmode_for_conflict(MultiXactStatus status, TransactionId xid,
50565059 LOCKMODE_from_mxstatus (wantedstatus )))
50575060 {
50585061 /* bummer */
5059- if (!ItemPointerEquals (& tup -> t_self , & tup -> t_data -> t_ctid ))
5062+ if (!ItemPointerEquals (& tup -> t_self , & tup -> t_data -> t_ctid ) ||
5063+ HeapTupleHeaderIndicatesMovedPartitions (tup -> t_data ))
50605064 return TM_Updated ;
50615065 else
50625066 return TM_Deleted ;
0 commit comments