postgresql/src/include/executor
Andres Freund 763f2edd92 Rejigger materializing and fetching a HeapTuple from a slot.
Previously materializing a slot always returned a HeapTuple. As
current work aims to reduce the reliance on HeapTuples (so other
storage systems can work efficiently), that needs to change. Thus
split the tasks of materializing a slot (i.e. making it independent
from the underlying storage / other memory contexts) from fetching a
HeapTuple from the slot.  For brevity, allow to fetch a HeapTuple from
a slot and materializing the slot at the same time, controlled by a
parameter.

For now some callers of ExecFetchSlotHeapTuple, with materialize =
true, expect that changes to the heap tuple will be reflected in the
underlying slot.  Those places will be adapted in due course, so while
not pretty, that's OK for now.

Also rename ExecFetchSlotTuple to ExecFetchSlotHeapTupleDatum and
ExecFetchSlotTupleDatum to ExecFetchSlotHeapTupleDatum, as it's likely
that future storage methods will need similar methods. There already
is ExecFetchSlotMinimalTuple, so the new names make the naming scheme
more coherent.

Author: Ashutosh Bapat and Andres Freund, with changes by Amit Khandekar
Discussion: https://postgr.es/m/20181105210039.hh4vvi4vwoq5ba2q@alap3.anarazel.de
2018-11-15 14:31:12 -08:00
..
execExpr.h Move EEOP_*_SYSVAR evaluation out of line. 2018-11-07 11:08:45 -08:00
execParallel.h Collect JIT instrumentation from workers. 2018-09-25 13:12:44 -07:00
execPartition.h Centralize executor's opening/closing of Relations for rangetable entries. 2018-10-04 14:03:42 -04:00
execdebug.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
execdesc.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
executor.h Don't require return slots for nodes without projection. 2018-11-09 17:19:39 -08:00
functions.h Support INOUT arguments in procedures 2018-03-14 12:07:28 -04:00
hashjoin.h Fix a boatload of typos in C comments. 2018-04-01 15:01:28 -04:00
instrument.h Post-feature-freeze pgindent run. 2018-04-26 14:47:16 -04:00
nodeAgg.h Improve spelling of new FINALFUNC_MODIFY aggregate attribute. 2018-05-21 11:41:42 -04:00
nodeAppend.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeBitmapAnd.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeBitmapHeapscan.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeBitmapIndexscan.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeBitmapOr.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeCtescan.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeCustom.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeForeignscan.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeFunctionscan.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeGather.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeGatherMerge.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeGroup.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeHash.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeHashjoin.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeIndexonlyscan.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeIndexscan.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeLimit.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeLockRows.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeMaterial.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeMergeAppend.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeMergejoin.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeModifyTable.h Revert MERGE patch 2018-04-12 11:22:56 +01:00
nodeNamedtuplestorescan.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeNestloop.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeProjectSet.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeRecursiveunion.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeResult.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeSamplescan.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeSeqscan.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeSetOp.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeSort.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeSubplan.h Fix failure with initplans used conditionally during EvalPlanQual rechecks. 2018-09-15 13:42:33 -04:00
nodeSubqueryscan.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeTableFuncscan.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeTidscan.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeUnique.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeValuesscan.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeWindowAgg.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodeWorktablescan.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
spi.h Advance transaction timestamp for intra-procedure transactions. 2018-10-08 16:16:36 -04:00
spi_priv.h Save/restore SPI's global variables in SPI_connect() and SPI_finish(). 2018-09-07 20:09:57 -04:00
tablefunc.h Fix a boatload of typos in C comments. 2018-04-01 15:01:28 -04:00
tqueue.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
tstoreReceiver.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
tuptable.h Rejigger materializing and fetching a HeapTuple from a slot. 2018-11-15 14:31:12 -08:00