Fix miscomputation of direct_lateral_relids for join relations.
If a PlaceHolderVar is to be evaluated at a join relation, but
its value is only needed there and not at higher levels, we neglected
to update the joinrel's direct_lateral_relids to include the PHV's
source rel. This causes problems because join_is_legal() then won't
allow joining the joinrel to the PHV's source rel at all, leading
to "failed to build any N-way joins" planner failures.
Per report from Andreas Seltenreich. Back-patch to 9.5
where the problem originated.
Discussion: https://postgr.es/m/87blfgqa4t.fsf@aurora.ydns.eu
Branch
------
REL9_5_STABLE
Details
-------
https://git.postgresql.org/pg/commitdiff/8c5da2d512e3e00c55f3f8fb7af12dfabc5b9284
Modified Files
--------------
src/backend/optimizer/util/placeholder.c | 39 +++++++++++++------
src/test/regress/expected/join.out | 64 ++++++++++++++++++++++++++++++++
src/test/regress/sql/join.sql | 27 ++++++++++++++
3 files changed, 118 insertions(+), 12 deletions(-)