aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/executor')
-rw-r--r--src/backend/executor/execTuples.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/src/backend/executor/execTuples.c b/src/backend/executor/execTuples.c
index 78cfcadea03..ea06aeedb21 100644
--- a/src/backend/executor/execTuples.c
+++ b/src/backend/executor/execTuples.c
@@ -626,8 +626,7 @@ ExecCopySlotMinimalTuple(TupleTableSlot *slot)
return heap_copy_minimal_tuple(slot->tts_mintuple);
if (slot->tts_tuple)
{
- if (TTS_HAS_PHYSICAL_TUPLE(slot) &&
- HeapTupleHeaderGetNatts(slot->tts_tuple->t_data)
+ if (HeapTupleHeaderGetNatts(slot->tts_tuple->t_data)
< slot->tts_tupleDescriptor->natts)
return minimal_expand_tuple(slot->tts_tuple,
slot->tts_tupleDescriptor);
@@ -675,18 +674,15 @@ ExecFetchSlotTuple(TupleTableSlot *slot)
if (HeapTupleHeaderGetNatts(slot->tts_tuple->t_data) <
slot->tts_tupleDescriptor->natts)
{
+ HeapTuple tuple;
MemoryContext oldContext = MemoryContextSwitchTo(slot->tts_mcxt);
- slot->tts_tuple = heap_expand_tuple(slot->tts_tuple,
- slot->tts_tupleDescriptor);
- slot->tts_shouldFree = true;
+ tuple = heap_expand_tuple(slot->tts_tuple,
+ slot->tts_tupleDescriptor);
MemoryContextSwitchTo(oldContext);
- return slot->tts_tuple;
- }
- else
- {
- return slot->tts_tuple;
+ slot = ExecStoreTuple(tuple, slot, InvalidBuffer, true);
}
+ return slot->tts_tuple;
}
/*