pgsql: Make NestLoop plan nodes pass outer-relation variables into their

From: tgl(at)postgresql(dot)org (Tom Lane)
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Make NestLoop plan nodes pass outer-relation variables into their
Date: 2010-07-12 17:01:06
Message-ID: 20100712170106.9900F7541D5@cvs.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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)

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Bruce Momjian 2010-07-12 17:47:39 pgsql: Spellcheck 9.0 release notes.
Previous Message Bruce Momjian 2010-07-12 16:21:51 pgsql: Document bump of minor library version numbers.