@@ -2618,7 +2618,8 @@ heap_delete(Relation relation, ItemPointer tid,
2618
2618
HEAP_XMAX_IS_LOCKED_ONLY (tp .t_data -> t_infomask ) ||
2619
2619
HeapTupleHeaderIsOnlyLocked (tp .t_data ))
2620
2620
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 ))
2622
2623
result = TM_Updated ;
2623
2624
else
2624
2625
result = TM_Deleted ;
@@ -3247,7 +3248,8 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
3247
3248
3248
3249
if (can_continue )
3249
3250
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 ))
3251
3253
result = TM_Updated ;
3252
3254
else
3253
3255
result = TM_Deleted ;
@@ -4483,7 +4485,8 @@ heap_lock_tuple(Relation relation, HeapTuple tuple,
4483
4485
HEAP_XMAX_IS_LOCKED_ONLY (tuple -> t_data -> t_infomask ) ||
4484
4486
HeapTupleHeaderIsOnlyLocked (tuple -> t_data ))
4485
4487
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 ))
4487
4490
result = TM_Updated ;
4488
4491
else
4489
4492
result = TM_Deleted ;
@@ -5056,7 +5059,8 @@ test_lockmode_for_conflict(MultiXactStatus status, TransactionId xid,
5056
5059
LOCKMODE_from_mxstatus (wantedstatus )))
5057
5060
{
5058
5061
/* 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 ))
5060
5064
return TM_Updated ;
5061
5065
else
5062
5066
return TM_Deleted ;
0 commit comments