Thread: pgsql: Fix handling of changed-Param signaling for CteScan plan nodes.

pgsql: Fix handling of changed-Param signaling for CteScan plan nodes.

From
tgl@postgresql.org (Tom Lane)
Date:
Log Message:
-----------
Fix handling of changed-Param signaling for CteScan plan nodes.  We were using
the "cteParam" as a proxy for the possibility that the underlying CTE plan
depends on outer-level variables or Params, but that doesn't work very well
because it sometimes causes calling subqueries to be treated as SubPlans when
they could be InitPlans.  This is inefficient and also causes the outright
failure exhibited in bug #4902.  Instead, leave the cteParam out of it and
copy the underlying CTE plan's extParams directly.  Per bug #4902 from
Marko Tiikkaja.

Modified Files:
--------------
    pgsql/src/backend/optimizer/plan:
        subselect.c (r1.150 -> r1.151)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/subselect.c?r1=1.150&r2=1.151)
    pgsql/src/test/regress/expected:
        with.out (r1.10 -> r1.11)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/with.out?r1=1.10&r2=1.11)
    pgsql/src/test/regress/sql:
        with.sql (r1.9 -> r1.10)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/sql/with.sql?r1=1.9&r2=1.10)