Fix some planner issues with degenerate outer join clauses.
authorTom Lane
Sun, 2 Aug 2015 00:57:41 +0000 (20:57 -0400)
committerTom Lane
Sun, 2 Aug 2015 00:57:41 +0000 (20:57 -0400)
commite39a3b2efee07237ee34572472edf8a07dbb9e2f
tree6f4c534b24af90732e7c1b3b62dcc2b2aaf7668d
parent216977a7d99507ca3227a505510bf5ced4f14799
Fix some planner issues with degenerate outer join clauses.

An outer join clause that didn't actually reference the RHS (perhaps only
after constant-folding) could confuse the join order enforcement logic,
leading to wrong query results.  Also, nested occurrences of such things
could trigger an Assertion that on reflection seems incorrect.

Per fuzz testing by Andreas Seltenreich.  The practical use of such cases
seems thin enough that it's not too surprising we've not heard field
reports about it.

This has been broken for a long time, so back-patch to all active branches.
src/backend/optimizer/path/joinrels.c
src/backend/optimizer/plan/initsplan.c
src/test/regress/expected/join.out
src/test/regress/sql/join.sql