aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2021-02-22 16:51:44 -0300
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2021-02-22 16:51:44 -0300
commit0f5505a8815aa4eb03ca61245a5a51ff9adda2f4 (patch)
treeb3237cda63b8e40c3fa909f5c084a83fa0ea365a /src
parent6a03369a71d4a7dc5b8d928aab775ddd28b72494 (diff)
downloadpostgresql-0f5505a8815aa4eb03ca61245a5a51ff9adda2f4.tar.gz
postgresql-0f5505a8815aa4eb03ca61245a5a51ff9adda2f4.zip
Remove pointless HeapTupleHeaderIndicatesMovedPartitions calls
Pavan Deolasee recently noted that a few of the HeapTupleHeaderIndicatesMovedPartitions calls added by commit 5db6df0c0117 are useless, since they are done after comparing t_self with t_ctid. But because t_self can never be set to the magical values that indicate that the tuple moved partition, this can never succeed: if the first test fails (so we know t_self equals t_ctid), necessarily the second test will also fail. So these checks can be removed and no harm is done. There's no bug here, just a code legibility issue. Reported-by: Pavan Deolasee <pavan.deolasee@gmail.com> Discussion: https://postgr.es/m/20200929164411.GA15497@alvherre.pgsql
Diffstat (limited to 'src')
-rw-r--r--src/backend/access/heap/heapam.c12
-rw-r--r--src/backend/access/heap/heapam_visibility.c9
2 files changed, 7 insertions, 14 deletions
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c
index 9926e2bd546..9c1d590dc71 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -2769,8 +2769,7 @@ l1:
HEAP_XMAX_IS_LOCKED_ONLY(tp.t_data->t_infomask) ||
HeapTupleHeaderIsOnlyLocked(tp.t_data))
result = TM_Ok;
- else if (!ItemPointerEquals(&tp.t_self, &tp.t_data->t_ctid) ||
- HeapTupleHeaderIndicatesMovedPartitions(tp.t_data))
+ else if (!ItemPointerEquals(&tp.t_self, &tp.t_data->t_ctid))
result = TM_Updated;
else
result = TM_Deleted;
@@ -3399,8 +3398,7 @@ l2:
if (can_continue)
result = TM_Ok;
- else if (!ItemPointerEquals(&oldtup.t_self, &oldtup.t_data->t_ctid) ||
- HeapTupleHeaderIndicatesMovedPartitions(oldtup.t_data))
+ else if (!ItemPointerEquals(&oldtup.t_self, &oldtup.t_data->t_ctid))
result = TM_Updated;
else
result = TM_Deleted;
@@ -4636,8 +4634,7 @@ l3:
HEAP_XMAX_IS_LOCKED_ONLY(tuple->t_data->t_infomask) ||
HeapTupleHeaderIsOnlyLocked(tuple->t_data))
result = TM_Ok;
- else if (!ItemPointerEquals(&tuple->t_self, &tuple->t_data->t_ctid) ||
- HeapTupleHeaderIndicatesMovedPartitions(tuple->t_data))
+ else if (!ItemPointerEquals(&tuple->t_self, &tuple->t_data->t_ctid))
result = TM_Updated;
else
result = TM_Deleted;
@@ -5210,8 +5207,7 @@ test_lockmode_for_conflict(MultiXactStatus status, TransactionId xid,
LOCKMODE_from_mxstatus(wantedstatus)))
{
/* bummer */
- if (!ItemPointerEquals(&tup->t_self, &tup->t_data->t_ctid) ||
- HeapTupleHeaderIndicatesMovedPartitions(tup->t_data))
+ if (!ItemPointerEquals(&tup->t_self, &tup->t_data->t_ctid))
return TM_Updated;
else
return TM_Deleted;
diff --git a/src/backend/access/heap/heapam_visibility.c b/src/backend/access/heap/heapam_visibility.c
index 65f91c82599..9a1e7288ae8 100644
--- a/src/backend/access/heap/heapam_visibility.c
+++ b/src/backend/access/heap/heapam_visibility.c
@@ -607,8 +607,7 @@ HeapTupleSatisfiesUpdate(HeapTuple htup, CommandId curcid,
{
if (HEAP_XMAX_IS_LOCKED_ONLY(tuple->t_infomask))
return TM_Ok;
- if (!ItemPointerEquals(&htup->t_self, &tuple->t_ctid) ||
- HeapTupleHeaderIndicatesMovedPartitions(tuple))
+ if (!ItemPointerEquals(&htup->t_self, &tuple->t_ctid))
return TM_Updated; /* updated by other */
else
return TM_Deleted; /* deleted by other */
@@ -653,8 +652,7 @@ HeapTupleSatisfiesUpdate(HeapTuple htup, CommandId curcid,
if (TransactionIdDidCommit(xmax))
{
- if (!ItemPointerEquals(&htup->t_self, &tuple->t_ctid) ||
- HeapTupleHeaderIndicatesMovedPartitions(tuple))
+ if (!ItemPointerEquals(&htup->t_self, &tuple->t_ctid))
return TM_Updated;
else
return TM_Deleted;
@@ -714,8 +712,7 @@ HeapTupleSatisfiesUpdate(HeapTuple htup, CommandId curcid,
SetHintBits(tuple, buffer, HEAP_XMAX_COMMITTED,
HeapTupleHeaderGetRawXmax(tuple));
- if (!ItemPointerEquals(&htup->t_self, &tuple->t_ctid) ||
- HeapTupleHeaderIndicatesMovedPartitions(tuple))
+ if (!ItemPointerEquals(&htup->t_self, &tuple->t_ctid))
return TM_Updated; /* updated by other */
else
return TM_Deleted; /* deleted by other */