mirror of
https://github.com/postgres/postgres.git
synced 2025-06-04 12:42:24 +03:00
This commit changes index-only scans so that data is read directly from the index tuple without first generating a faux heap tuple. The only immediate benefit is that indexes on system columns (such as OID) can be used in index-only scans, but this is necessary infrastructure if we are ever to support index-only scans on expression indexes. The executor is now ready for that, though the planner still needs substantial work to recognize the possibility. To do this, Vars in index-only plan nodes have to refer to index columns not heap columns. I introduced a new special varno, INDEX_VAR, to mark such Vars to avoid confusion. (In passing, this commit renames the two existing special varnos to OUTER_VAR and INNER_VAR.) This allows ruleutils.c to handle them with logic similar to what we use for subplan reference Vars. Since index-only scans are now fundamentally different from regular indexscans so far as their expression subtrees are concerned, I also chose to change them to have their own plan node type (and hence, their own executor source file).
30 lines
1.2 KiB
Makefile
30 lines
1.2 KiB
Makefile
#-------------------------------------------------------------------------
|
|
#
|
|
# Makefile--
|
|
# Makefile for executor
|
|
#
|
|
# IDENTIFICATION
|
|
# src/backend/executor/Makefile
|
|
#
|
|
#-------------------------------------------------------------------------
|
|
|
|
subdir = src/backend/executor
|
|
top_builddir = ../../..
|
|
include $(top_builddir)/src/Makefile.global
|
|
|
|
OBJS = execAmi.o execCurrent.o execGrouping.o execJunk.o execMain.o \
|
|
execProcnode.o execQual.o execScan.o execTuples.o \
|
|
execUtils.o functions.o instrument.o nodeAppend.o nodeAgg.o \
|
|
nodeBitmapAnd.o nodeBitmapOr.o \
|
|
nodeBitmapHeapscan.o nodeBitmapIndexscan.o nodeHash.o \
|
|
nodeHashjoin.o nodeIndexscan.o nodeIndexonlyscan.o \
|
|
nodeLimit.o nodeLockRows.o \
|
|
nodeMaterial.o nodeMergeAppend.o nodeMergejoin.o nodeModifyTable.o \
|
|
nodeNestloop.o nodeFunctionscan.o nodeRecursiveunion.o nodeResult.o \
|
|
nodeSeqscan.o nodeSetOp.o nodeSort.o nodeUnique.o \
|
|
nodeValuesscan.o nodeCtescan.o nodeWorktablescan.o \
|
|
nodeGroup.o nodeSubplan.o nodeSubqueryscan.o nodeTidscan.o \
|
|
nodeForeignscan.o nodeWindowAgg.o tstoreReceiver.o spi.o
|
|
|
|
include $(top_srcdir)/src/backend/common.mk
|