pgsql: Undo mistaken tightening in join_is_legal(). - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Undo mistaken tightening in join_is_legal().
Date
Msg-id E1ZPhAw-0007vt-CT@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Undo mistaken tightening in join_is_legal().

One of the changes I made in commit 8703059c6b55c427 turns out not to have
been such a good idea: we still need the exception in join_is_legal() that
allows a join if both inputs already overlap the RHS of the special join
we're checking.  Otherwise we can miss valid plans, and might indeed fail
to find a plan at all, as in recent report from Andreas Seltenreich.

That code was added way back in commit c17117649b9ae23d, but I failed to
include a regression test case then; my bad.  Put it back with a better
explanation, and a test this time.  The logic does end up a bit different
than before though: I now believe it's appropriate to make this check
first, thereby allowing such a case whether or not we'd consider the
previous SJ(s) to commute with this one.  (Presumably, we already decided
they did; but it was confusing to have this consideration in the middle
of the code that was handling the other case.)

Back-patch to all active branches, like the previous patch.

Branch
------
REL9_2_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/866197d828a85d80886871801b1d084dd3116936

Modified Files
--------------
src/backend/optimizer/path/joinrels.c |   29 +++++++++++++++++----
src/test/regress/expected/join.out    |   46 +++++++++++++++++++++++++++++++++
src/test/regress/sql/join.sql         |   19 ++++++++++++++
3 files changed, 89 insertions(+), 5 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Undo mistaken tightening in join_is_legal().
Next
From: Alvaro Herrera
Date:
Subject: pgsql: Fix unitialized variables