Fix planner bug with nested PlaceHolderVars in 9.2 (only).
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 10 Jun 2014 01:28:56 +0000 (21:28 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 10 Jun 2014 01:28:56 +0000 (21:28 -0400)
commit187ae17300776f48b2bd9d0737923b1bf70f606e
treeb3f0f827848a36a55205fad3cb55d72eec188ff6
parent93328b2dfb9aa08e5f56a049d84df4ad3c9ff225
Fix planner bug with nested PlaceHolderVars in 9.2 (only).

Commit 9e7e29c75ad441450f9b8287bd51c13521641e3b fixed some problems with
LATERAL references in PlaceHolderVars, one of which was that "createplan.c
wasn't handling nested PlaceHolderVars properly".  I failed to see that
this problem might occur in older versions as well; but it can, as
demonstrated in bug #10587 from Geoff Speicher.  In this case the nesting
occurs due to push-down of PlaceHolderVar expressions into a parameterized
path.  So, back-patch the relevant changes from 9e7e29c75ad4 into 9.2 where
parameterized paths were introduced.  (Perhaps I'm still being too myopic,
but I'm hesitant to change older branches without some evidence that the
case can occur there.)
src/backend/nodes/equalfuncs.c
src/backend/optimizer/plan/createplan.c
src/test/regress/expected/join.out
src/test/regress/sql/join.sql