heapam_tuple_complete_speculative : remove unnecessary tuple fetch

From: Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com>
To: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: heapam_tuple_complete_speculative : remove unnecessary tuple fetch
Date: 2026-03-24 06:56:28
Message-ID: FCB61654-575D-4F08-AA7E-ED462EDE48A7@gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

While reviewing another patch, I noticed this:
```
static void
heapam_tuple_complete_speculative(Relation relation, TupleTableSlot *slot,
uint32 specToken, bool succeeded)
{
bool shouldFree = true;
HeapTuple tuple = ExecFetchSlotHeapTuple(slot, true, &shouldFree); // <== tuple is not used

/* adjust the tuple's state accordingly */
if (succeeded)
heap_finish_speculative(relation, &slot->tts_tid);
else
heap_abort_speculative(relation, &slot->tts_tid);

if (shouldFree)
pfree(tuple);
}
```

In this function, tuple is not used at all, so there seems to be no need to fetch it, and shouldFree is thus not needed either.

This appears to have been there since 5db6df0c011, where the function was introduced. It looks like a copy-pasto from the previous function, heapam_tuple_insert_speculative(), which does need to fetch and possibly free the tuple.

I tried simply removing ExecFetchSlotHeapTuple(), and "make check" still passes. But I may be missing something, so I’d like to confirm.

The attached patch just removes the unused tuple and shouldFree from this function. As touching the file, I also fixed a typo in the file header comment.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/

Attachment Content-Type Size
v1-0001-heapam_handler-remove-unused-tuple-fetch-in-specu.patch application/octet-stream 1.7 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Smith 2026-03-24 06:59:25 Re: Initial COPY of Logical Replication is too slow
Previous Message Ajin Cherian 2026-03-24 06:54:09 Re: Initial COPY of Logical Replication is too slow