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

From: Bruce Momjian <bruce(at)momjian(dot)us>
To: Tom Lane <tgl(at)postgresql(dot)org>
Cc: pgsql-committers(at)postgresql(dot)org
Subject: Re: pgsql: Make NestLoop plan nodes pass outer-relation variables into their
Date: 2010-07-12 19:36:10
Message-ID: 201007121936.o6CJaAM24624@momjian.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers


Man, that's a lot of affected files.

---------------------------------------------------------------------------

Tom Lane wrote:
> 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)
>
> --
> Sent via pgsql-committers mailing list (pgsql-committers(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-committers

--
Bruce Momjian <bruce(at)momjian(dot)us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ None of us is going to be here forever. +

In response to

Browse pgsql-committers by date

  From Date Subject
Next Message Heikki Linnakangas 2010-07-13 09:02:30 pgsql: Oops, in the previous fix to prevent a cursor that's being used
Previous Message Bruce Momjian 2010-07-12 18:30:36 pgsql: Restore pl/pgsql default install release note item.