pgsql: Make NestLoop plan nodes pass outer-relation variables into their - Mailing list pgsql-committers
From | tgl@postgresql.org (Tom Lane) |
---|---|
Subject | pgsql: Make NestLoop plan nodes pass outer-relation variables into their |
Date | |
Msg-id | 20100712170106.9900F7541D5@cvs.postgresql.org Whole thread Raw |
Responses |
Re: pgsql: Make NestLoop plan nodes pass
outer-relation variables into their
|
List | pgsql-committers |
Log Message: ----------- Make NestLoop plan nodes pass outer-relation variables into their inner relation using the general PARAM_EXEC executor parameter mechanism, rather than the ad-hoc kluge of passing the outer tuple down through ExecReScan. The previous method was hard to understand and could never be extended to handle parameters coming from multiple join levels. This patch doesn't change the set of possible plans nor have any significant performance effect, but it's necessary infrastructure for future generalization of the concept of an inner indexscan plan. ExecReScan's second parameter is now unused, so it's removed. Modified Files: -------------- pgsql/src/backend/executor: execAmi.c (r1.108 -> r1.109) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execAmi.c?r1=1.108&r2=1.109) execMain.c (r1.350 -> r1.351) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execMain.c?r1=1.350&r2=1.351) execProcnode.c (r1.70 -> r1.71) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execProcnode.c?r1=1.70&r2=1.71) execQual.c (r1.263 -> r1.264) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execQual.c?r1=1.263&r2=1.264) nodeAgg.c (r1.175 -> r1.176) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeAgg.c?r1=1.175&r2=1.176) nodeAppend.c (r1.77 -> r1.78) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeAppend.c?r1=1.77&r2=1.78) nodeBitmapAnd.c (r1.13 -> r1.14) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeBitmapAnd.c?r1=1.13&r2=1.14) nodeBitmapHeapscan.c (r1.38 -> r1.39) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeBitmapHeapscan.c?r1=1.38&r2=1.39) nodeBitmapIndexscan.c (r1.33 -> r1.34) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeBitmapIndexscan.c?r1=1.33&r2=1.34) nodeBitmapOr.c (r1.12 -> r1.13) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeBitmapOr.c?r1=1.12&r2=1.13) nodeCtescan.c (r1.8 -> r1.9) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeCtescan.c?r1=1.8&r2=1.9) nodeFunctionscan.c (r1.55 -> r1.56) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeFunctionscan.c?r1=1.55&r2=1.56) nodeGroup.c (r1.77 -> r1.78) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeGroup.c?r1=1.77&r2=1.78) nodeHash.c (r1.129 -> r1.130) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeHash.c?r1=1.129&r2=1.130) nodeHashjoin.c (r1.103 -> r1.104) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeHashjoin.c?r1=1.103&r2=1.104) nodeIndexscan.c (r1.139 -> r1.140) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeIndexscan.c?r1=1.139&r2=1.140) nodeLimit.c (r1.41 -> r1.42) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeLimit.c?r1=1.41&r2=1.42) nodeLockRows.c (r1.4 -> r1.5) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeLockRows.c?r1=1.4&r2=1.5) nodeMaterial.c (r1.71 -> r1.72) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeMaterial.c?r1=1.71&r2=1.72) nodeMergejoin.c (r1.103 -> r1.104) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeMergejoin.c?r1=1.103&r2=1.104) nodeModifyTable.c (r1.7 -> r1.8) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeModifyTable.c?r1=1.7&r2=1.8) nodeNestloop.c (r1.55 -> r1.56) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeNestloop.c?r1=1.55&r2=1.56) nodeRecursiveunion.c (r1.6 -> r1.7) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeRecursiveunion.c?r1=1.6&r2=1.7) nodeResult.c (r1.45 -> r1.46) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeResult.c?r1=1.45&r2=1.46) nodeSeqscan.c (r1.70 -> r1.71) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeSeqscan.c?r1=1.70&r2=1.71) nodeSetOp.c (r1.33 -> r1.34) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeSetOp.c?r1=1.33&r2=1.34) nodeSort.c (r1.67 -> r1.68) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeSort.c?r1=1.67&r2=1.68) nodeSubplan.c (r1.101 -> r1.102) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeSubplan.c?r1=1.101&r2=1.102) nodeSubqueryscan.c (r1.45 -> r1.46) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeSubqueryscan.c?r1=1.45&r2=1.46) nodeTidscan.c (r1.65 -> r1.66) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeTidscan.c?r1=1.65&r2=1.66) nodeUnique.c (r1.63 -> r1.64) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeUnique.c?r1=1.63&r2=1.64) nodeValuesscan.c (r1.12 -> r1.13) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeValuesscan.c?r1=1.12&r2=1.13) nodeWindowAgg.c (r1.13 -> r1.14) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeWindowAgg.c?r1=1.13&r2=1.14) nodeWorktablescan.c (r1.10 -> r1.11) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeWorktablescan.c?r1=1.10&r2=1.11) pgsql/src/backend/nodes: copyfuncs.c (r1.464 -> r1.465) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/copyfuncs.c?r1=1.464&r2=1.465) outfuncs.c (r1.385 -> r1.386) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/outfuncs.c?r1=1.385&r2=1.386) pgsql/src/backend/optimizer/plan: createplan.c (r1.275 -> r1.276) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/createplan.c?r1=1.275&r2=1.276) setrefs.c (r1.160 -> r1.161) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/setrefs.c?r1=1.160&r2=1.161) subselect.c (r1.162 -> r1.163) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/subselect.c?r1=1.162&r2=1.163) pgsql/src/include/executor: executor.h (r1.169 -> r1.170) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/executor.h?r1=1.169&r2=1.170) nodeAgg.h (r1.32 -> r1.33) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeAgg.h?r1=1.32&r2=1.33) nodeAppend.h (r1.30 -> r1.31) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeAppend.h?r1=1.30&r2=1.31) nodeBitmapAnd.h (r1.8 -> r1.9) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeBitmapAnd.h?r1=1.8&r2=1.9) nodeBitmapHeapscan.h (r1.8 -> r1.9) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeBitmapHeapscan.h?r1=1.8&r2=1.9) nodeBitmapIndexscan.h (r1.8 -> r1.9) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeBitmapIndexscan.h?r1=1.8&r2=1.9) nodeBitmapOr.h (r1.8 -> r1.9) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeBitmapOr.h?r1=1.8&r2=1.9) nodeCtescan.h (r1.4 -> r1.5) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeCtescan.h?r1=1.4&r2=1.5) nodeFunctionscan.h (r1.15 -> r1.16) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeFunctionscan.h?r1=1.15&r2=1.16) nodeGroup.h (r1.35 -> r1.36) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeGroup.h?r1=1.35&r2=1.36) nodeHash.h (r1.49 -> r1.50) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeHash.h?r1=1.49&r2=1.50) nodeHashjoin.h (r1.40 -> r1.41) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeHashjoin.h?r1=1.40&r2=1.41) nodeIndexscan.h (r1.36 -> r1.37) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeIndexscan.h?r1=1.36&r2=1.37) nodeLimit.h (r1.18 -> r1.19) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeLimit.h?r1=1.18&r2=1.19) nodeLockRows.h (r1.2 -> r1.3) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeLockRows.h?r1=1.2&r2=1.3) nodeMaterial.h (r1.30 -> r1.31) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeMaterial.h?r1=1.30&r2=1.31) nodeMergejoin.h (r1.29 -> r1.30) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeMergejoin.h?r1=1.29&r2=1.30) nodeModifyTable.h (r1.2 -> r1.3) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeModifyTable.h?r1=1.2&r2=1.3) nodeNestloop.h (r1.30 -> r1.31) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeNestloop.h?r1=1.30&r2=1.31) nodeRecursiveunion.h (r1.4 -> r1.5) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeRecursiveunion.h?r1=1.4&r2=1.5) nodeResult.h (r1.28 -> r1.29) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeResult.h?r1=1.28&r2=1.29) nodeSeqscan.h (r1.29 -> r1.30) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeSeqscan.h?r1=1.29&r2=1.30) nodeSetOp.h (r1.18 -> r1.19) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeSetOp.h?r1=1.18&r2=1.19) nodeSort.h (r1.27 -> r1.28) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeSort.h?r1=1.27&r2=1.28) nodeSubqueryscan.h (r1.18 -> r1.19) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeSubqueryscan.h?r1=1.18&r2=1.19) nodeTidscan.h (r1.22 -> r1.23) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeTidscan.h?r1=1.22&r2=1.23) nodeUnique.h (r1.27 -> r1.28) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeUnique.h?r1=1.27&r2=1.28) nodeValuesscan.h (r1.7 -> r1.8) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeValuesscan.h?r1=1.7&r2=1.8) nodeWindowAgg.h (r1.4 -> r1.5) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeWindowAgg.h?r1=1.4&r2=1.5) nodeWorktablescan.h (r1.4 -> r1.5) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeWorktablescan.h?r1=1.4&r2=1.5) pgsql/src/include/nodes: nodes.h (r1.234 -> r1.235) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/nodes.h?r1=1.234&r2=1.235) plannodes.h (r1.117 -> r1.118) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/plannodes.h?r1=1.117&r2=1.118) primnodes.h (r1.156 -> r1.157) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/primnodes.h?r1=1.156&r2=1.157) relation.h (r1.187 -> r1.188) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/relation.h?r1=1.187&r2=1.188) pgsql/src/include/optimizer: subselect.h (r1.39 -> r1.40) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/optimizer/subselect.h?r1=1.39&r2=1.40) pgsql/src/test/regress/expected: rangefuncs.out (r1.25 -> r1.26) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/rangefuncs.out?r1=1.25&r2=1.26) pgsql/src/test/regress/sql: rangefuncs.sql (r1.13 -> r1.14) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/sql/rangefuncs.sql?r1=1.13&r2=1.14)
pgsql-committers by date: