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

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: pgsql: Make NestLoop plan nodes pass outer-relation variables into their
Дата
Msg-id 201007121936.o6CJaAM24624@momjian.us
обсуждение исходный текст
Ответ на pgsql: Make NestLoop plan nodes pass outer-relation variables into their  (tgl@postgresql.org (Tom Lane))
Список 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@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-committers

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

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

В списке pgsql-committers по дате отправления:

Предыдущее
От: momjian@postgresql.org (Bruce Momjian)
Дата:
Сообщение: pgsql: Restore pl/pgsql default install release note item.
Следующее
От: heikki@postgresql.org (Heikki Linnakangas)
Дата:
Сообщение: pgsql: Oops, in the previous fix to prevent a cursor that's being used