@@ -2618,7 +2618,8 @@ heap_delete(Relation relation, ItemPointer tid,
26182618HEAP_XMAX_IS_LOCKED_ONLY (tp .t_data -> t_infomask )||
26192619HeapTupleHeaderIsOnlyLocked (tp .t_data ))
26202620result = 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 ))
26222623result = TM_Updated ;
26232624else
26242625result = TM_Deleted ;
@@ -3247,7 +3248,8 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
32473248
32483249if (can_continue )
32493250result = 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 ))
32513253result = TM_Updated ;
32523254else
32533255result = TM_Deleted ;
@@ -4483,7 +4485,8 @@ heap_lock_tuple(Relation relation, HeapTuple tuple,
44834485HEAP_XMAX_IS_LOCKED_ONLY (tuple -> t_data -> t_infomask )||
44844486HeapTupleHeaderIsOnlyLocked (tuple -> t_data ))
44854487result = 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 ))
44874490result = TM_Updated ;
44884491else
44894492result = TM_Deleted ;
@@ -5056,7 +5059,8 @@ test_lockmode_for_conflict(MultiXactStatus status, TransactionId xid,
50565059LOCKMODE_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 ))
50605064return TM_Updated ;
50615065else
50625066return TM_Deleted ;