From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql-committers(at)postgresql(dot)org |
Subject: | pgsql: Undo mistaken tightening in join_is_legal(). |
Date: | 2015-08-13 01:19:22 |
Message-ID: | E1ZPhAw-0007vu-CX@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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_1_STABLE
Details
-------
http://git.postgresql.org/pg/commitdiff/4390ba7bf937f56f647359b52e6ba04f31b21901
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(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2015-08-13 02:35:55 | Re: [COMMITTERS] pgsql: Further fixes for degenerate outer join clauses. |
Previous Message | Andres Freund | 2015-08-12 23:31:56 | Re: [COMMITTERS] pgsql: Close some holes in BRIN page assignment |