Perhaps it's just a matter of taste, but I think the TupleTableSlotOps
structure, once initialized, should be used wherever possible. At least for me
personally, when I read the code, the particular callback function name is a
bit disturbing wherever it's not necessary.

-- 
Antonin Houska
Web: https://www.cybertec-postgresql.com

diff --git a/src/backend/executor/execTuples.c b/src/backend/executor/execTuples.c
index 55d1669db0..4989604d4e 100644
--- a/src/backend/executor/execTuples.c
+++ b/src/backend/executor/execTuples.c
@@ -248,7 +248,7 @@ tts_virtual_copyslot(TupleTableSlot *dstslot, TupleTableSlot *srcslot)
 
 	Assert(srcdesc->natts <= dstslot->tts_tupleDescriptor->natts);
 
-	tts_virtual_clear(dstslot);
+	dstslot->tts_ops->clear(dstslot);
 
 	slot_getallattrs(srcslot);
 
@@ -262,7 +262,7 @@ tts_virtual_copyslot(TupleTableSlot *dstslot, TupleTableSlot *srcslot)
 	dstslot->tts_flags &= ~TTS_FLAG_EMPTY;
 
 	/* make sure storage doesn't depend on external memory */
-	tts_virtual_materialize(dstslot);
+	dstslot->tts_ops->materialize(dstslot);
 }
 
 static HeapTuple
@@ -399,7 +399,7 @@ tts_heap_get_heap_tuple(TupleTableSlot *slot)
 
 	Assert(!TTS_EMPTY(slot));
 	if (!hslot->tuple)
-		tts_heap_materialize(slot);
+		slot->tts_ops->materialize(slot);
 
 	return hslot->tuple;
 }
@@ -411,7 +411,7 @@ tts_heap_copy_heap_tuple(TupleTableSlot *slot)
 
 	Assert(!TTS_EMPTY(slot));
 	if (!hslot->tuple)
-		tts_heap_materialize(slot);
+		slot->tts_ops->materialize(slot);
 
 	return heap_copytuple(hslot->tuple);
 }
@@ -422,7 +422,7 @@ tts_heap_copy_minimal_tuple(TupleTableSlot *slot)
 	HeapTupleTableSlot *hslot = (HeapTupleTableSlot *) slot;
 
 	if (!hslot->tuple)
-		tts_heap_materialize(slot);
+		slot->tts_ops->materialize(slot);
 
 	return minimal_tuple_from_heap_tuple(hslot->tuple);
 }
@@ -432,7 +432,7 @@ tts_heap_store_tuple(TupleTableSlot *slot, HeapTuple tuple, bool shouldFree)
 {
 	HeapTupleTableSlot *hslot = (HeapTupleTableSlot *) slot;
 
-	tts_heap_clear(slot);
+	slot->tts_ops->clear(slot);
 
 	slot->tts_nvalid = 0;
 	hslot->tuple = tuple;
@@ -567,7 +567,7 @@ tts_minimal_get_minimal_tuple(TupleTableSlot *slot)
 	MinimalTupleTableSlot *mslot = (MinimalTupleTableSlot *) slot;
 
 	if (!mslot->mintuple)
-		tts_minimal_materialize(slot);
+		slot->tts_ops->materialize(slot);
 
 	return mslot->mintuple;
 }
@@ -578,7 +578,7 @@ tts_minimal_copy_heap_tuple(TupleTableSlot *slot)
 	MinimalTupleTableSlot *mslot = (MinimalTupleTableSlot *) slot;
 
 	if (!mslot->mintuple)
-		tts_minimal_materialize(slot);
+		slot->tts_ops->materialize(slot);
 
 	return heap_tuple_from_minimal_tuple(mslot->mintuple);
 }
@@ -589,7 +589,7 @@ tts_minimal_copy_minimal_tuple(TupleTableSlot *slot)
 	MinimalTupleTableSlot *mslot = (MinimalTupleTableSlot *) slot;
 
 	if (!mslot->mintuple)
-		tts_minimal_materialize(slot);
+		slot->tts_ops->materialize(slot);
 
 	return heap_copy_minimal_tuple(mslot->mintuple);
 }
@@ -599,7 +599,7 @@ tts_minimal_store_tuple(TupleTableSlot *slot, MinimalTuple mtup, bool shouldFree
 {
 	MinimalTupleTableSlot *mslot = (MinimalTupleTableSlot *) slot;
 
-	tts_minimal_clear(slot);
+	slot->tts_ops->clear(slot);
 
 	Assert(!TTS_SHOULDFREE(slot));
 	Assert(TTS_EMPTY(slot));
@@ -789,7 +789,7 @@ tts_buffer_heap_get_heap_tuple(TupleTableSlot *slot)
 	Assert(!TTS_EMPTY(slot));
 
 	if (!bslot->base.tuple)
-		tts_buffer_heap_materialize(slot);
+		slot->tts_ops->materialize(slot);
 
 	return bslot->base.tuple;
 }
@@ -802,7 +802,7 @@ tts_buffer_heap_copy_heap_tuple(TupleTableSlot *slot)
 	Assert(!TTS_EMPTY(slot));
 
 	if (!bslot->base.tuple)
-		tts_buffer_heap_materialize(slot);
+		slot->tts_ops->materialize(slot);
 
 	return heap_copytuple(bslot->base.tuple);
 }
@@ -815,7 +815,7 @@ tts_buffer_heap_copy_minimal_tuple(TupleTableSlot *slot)
 	Assert(!TTS_EMPTY(slot));
 
 	if (!bslot->base.tuple)
-		tts_buffer_heap_materialize(slot);
+		slot->tts_ops->materialize(slot);
 
 	return minimal_tuple_from_heap_tuple(bslot->base.tuple);
 }

Reply via email to