pgsql: Prevent improper reordering of antijoins vs. outer joins. - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Prevent improper reordering of antijoins vs. outer joins.
Date
Msg-id E1Ym6wW-0001ca-1a@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Prevent improper reordering of antijoins vs. outer joins.

An outer join appearing within the RHS of an antijoin can't commute with
the antijoin, but somehow I missed teaching make_outerjoininfo() about
that.  In Teodor Sigaev's recent trouble report, this manifests as a
"could not find RelOptInfo for given relids" error within eqjoinsel();
but I think silently wrong query results are possible too, if the planner
misorders the joins and doesn't happen to trigger any internal consistency
checks.  It's broken as far back as we had antijoins, so back-patch to all
supported branches.

Branch
------
REL9_3_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/3e47d0b2a300305a195ac7a6d8ebd6ff5291b7b4

Modified Files
--------------
src/backend/optimizer/plan/initsplan.c |    7 +++---
src/test/regress/expected/join.out     |   42 ++++++++++++++++++++++++++++++++
src/test/regress/sql/join.sql          |   17 +++++++++++++
3 files changed, 63 insertions(+), 3 deletions(-)


pgsql-committers by date:

Previous
From: Peter Eisentraut
Date:
Subject: pgsql: Replace backslashes by forward slashes in MSVC build code
Next
From: Tom Lane
Date:
Subject: pgsql: Prevent improper reordering of antijoins vs. outer joins.