Fix planner bug with nested PlaceHolderVars in 9.2 (only).
Tom Lane <tgl@sss.pgh.pa.us>
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.)
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/nodes/equalfuncs.c | modified | +10 −6 |
| src/backend/optimizer/plan/createplan.c | modified | +30 −9 |
| src/test/regress/expected/join.out | modified | +74 −0 |
| src/test/regress/sql/join.sql | modified | +58 −0 |