Thread: pgsql: Extend the ExecInitNode API so that plan nodes receive a set of

pgsql: Extend the ExecInitNode API so that plan nodes receive a set of

From
tgl@postgresql.org (Tom Lane)
Date:
Log Message:
-----------
Extend the ExecInitNode API so that plan nodes receive a set of flag
bits indicating which optional capabilities can actually be exercised
at runtime.  This will allow Sort and Material nodes, and perhaps later
other nodes, to avoid unnecessary overhead in common cases.
This commit just adds the infrastructure and arranges to pass the correct
flag values down to plan nodes; none of the actual optimizations are here
yet.  I'm committing this separately in case anyone wants to measure the
added overhead.  (It should be negligible.)

Simon Riggs and Tom Lane

Modified Files:
--------------
    pgsql/src/backend/commands:
        explain.c (r1.143 -> r1.144)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/explain.c.diff?r1=1.143&r2=1.144)
    pgsql/src/backend/executor:
        execMain.c (r1.267 -> r1.268)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execMain.c.diff?r1=1.267&r2=1.268)
        execProcnode.c (r1.52 -> r1.53)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execProcnode.c.diff?r1=1.52&r2=1.53)
        functions.c (r1.99 -> r1.100)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/functions.c.diff?r1=1.99&r2=1.100)
        nodeAgg.c (r1.136 -> r1.137)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeAgg.c.diff?r1=1.136&r2=1.137)
        nodeAppend.c (r1.66 -> r1.67)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeAppend.c.diff?r1=1.66&r2=1.67)
        nodeBitmapAnd.c (r1.4 -> r1.5)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeBitmapAnd.c.diff?r1=1.4&r2=1.5)
        nodeBitmapHeapscan.c (r1.8 -> r1.9)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeBitmapHeapscan.c.diff?r1=1.8&r2=1.9)
        nodeBitmapIndexscan.c (r1.15 -> r1.16)

(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeBitmapIndexscan.c.diff?r1=1.15&r2=1.16)
        nodeBitmapOr.c (r1.3 -> r1.4)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeBitmapOr.c.diff?r1=1.3&r2=1.4)
        nodeFunctionscan.c (r1.35 -> r1.36)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeFunctionscan.c.diff?r1=1.35&r2=1.36)
        nodeGroup.c (r1.62 -> r1.63)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeGroup.c.diff?r1=1.62&r2=1.63)
        nodeHash.c (r1.99 -> r1.100)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeHash.c.diff?r1=1.99&r2=1.100)
        nodeHashjoin.c (r1.79 -> r1.80)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeHashjoin.c.diff?r1=1.79&r2=1.80)
        nodeIndexscan.c (r1.110 -> r1.111)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeIndexscan.c.diff?r1=1.110&r2=1.111)
        nodeLimit.c (r1.23 -> r1.24)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeLimit.c.diff?r1=1.23&r2=1.24)
        nodeMaterial.c (r1.51 -> r1.52)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeMaterial.c.diff?r1=1.51&r2=1.52)
        nodeMergejoin.c (r1.76 -> r1.77)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeMergejoin.c.diff?r1=1.76&r2=1.77)
        nodeNestloop.c (r1.40 -> r1.41)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeNestloop.c.diff?r1=1.40&r2=1.41)
        nodeResult.c (r1.32 -> r1.33)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeResult.c.diff?r1=1.32&r2=1.33)
        nodeSeqscan.c (r1.56 -> r1.57)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeSeqscan.c.diff?r1=1.56&r2=1.57)
        nodeSetOp.c (r1.19 -> r1.20)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeSetOp.c.diff?r1=1.19&r2=1.20)
        nodeSort.c (r1.53 -> r1.54)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeSort.c.diff?r1=1.53&r2=1.54)
        nodeSubplan.c (r1.72 -> r1.73)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeSubplan.c.diff?r1=1.72&r2=1.73)
        nodeSubqueryscan.c (r1.27 -> r1.28)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeSubqueryscan.c.diff?r1=1.27&r2=1.28)
        nodeTidscan.c (r1.46 -> r1.47)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeTidscan.c.diff?r1=1.46&r2=1.47)
        nodeUnique.c (r1.50 -> r1.51)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeUnique.c.diff?r1=1.50&r2=1.51)
        spi.c (r1.146 -> r1.147)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/spi.c.diff?r1=1.146&r2=1.147)
    pgsql/src/backend/tcop:
        pquery.c (r1.99 -> r1.100)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/tcop/pquery.c.diff?r1=1.99&r2=1.100)
    pgsql/src/include/executor:
        executor.h (r1.124 -> r1.125)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/executor.h.diff?r1=1.124&r2=1.125)
        nodeAgg.h (r1.24 -> r1.25)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeAgg.h.diff?r1=1.24&r2=1.25)
        nodeAppend.h (r1.23 -> r1.24)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeAppend.h.diff?r1=1.23&r2=1.24)
        nodeBitmapAnd.h (r1.1 -> r1.2)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeBitmapAnd.h.diff?r1=1.1&r2=1.2)
        nodeBitmapHeapscan.h (r1.1 -> r1.2)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeBitmapHeapscan.h.diff?r1=1.1&r2=1.2)
        nodeBitmapIndexscan.h (r1.1 -> r1.2)

(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeBitmapIndexscan.h.diff?r1=1.1&r2=1.2)
        nodeBitmapOr.h (r1.1 -> r1.2)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeBitmapOr.h.diff?r1=1.1&r2=1.2)
        nodeFunctionscan.h (r1.7 -> r1.8)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeFunctionscan.h.diff?r1=1.7&r2=1.8)
        nodeGroup.h (r1.28 -> r1.29)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeGroup.h.diff?r1=1.28&r2=1.29)
        nodeHash.h (r1.38 -> r1.39)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeHash.h.diff?r1=1.38&r2=1.39)
        nodeHashjoin.h (r1.30 -> r1.31)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeHashjoin.h.diff?r1=1.30&r2=1.31)
        nodeIndexscan.h (r1.26 -> r1.27)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeIndexscan.h.diff?r1=1.26&r2=1.27)
        nodeLimit.h (r1.11 -> r1.12)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeLimit.h.diff?r1=1.11&r2=1.12)
        nodeMaterial.h (r1.23 -> r1.24)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeMaterial.h.diff?r1=1.23&r2=1.24)
        nodeMergejoin.h (r1.22 -> r1.23)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeMergejoin.h.diff?r1=1.22&r2=1.23)
        nodeNestloop.h (r1.23 -> r1.24)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeNestloop.h.diff?r1=1.23&r2=1.24)
        nodeResult.h (r1.20 -> r1.21)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeResult.h.diff?r1=1.20&r2=1.21)
        nodeSeqscan.h (r1.22 -> r1.23)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeSeqscan.h.diff?r1=1.22&r2=1.23)
        nodeSetOp.h (r1.11 -> r1.12)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeSetOp.h.diff?r1=1.11&r2=1.12)
        nodeSort.h (r1.20 -> r1.21)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeSort.h.diff?r1=1.20&r2=1.21)
        nodeSubplan.h (r1.22 -> r1.23)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeSubplan.h.diff?r1=1.22&r2=1.23)
        nodeSubqueryscan.h (r1.11 -> r1.12)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeSubqueryscan.h.diff?r1=1.11&r2=1.12)
        nodeTidscan.h (r1.15 -> r1.16)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeTidscan.h.diff?r1=1.15&r2=1.16)
        nodeUnique.h (r1.20 -> r1.21)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeUnique.h.diff?r1=1.20&r2=1.21)