Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-committers by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group