diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2015-08-12 21:18:45 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2015-08-12 21:19:09 -0400 |
commit | 4390ba7bf937f56f647359b52e6ba04f31b21901 (patch) | |
tree | c2f03ab6b9b23622c314ccfc2b72f3b036c356ba /src/backend/executor/execMain.c | |
parent | a2b2565fc9318b8903ef4821bc0be40a64810aec (diff) | |
download | postgresql-4390ba7bf937f56f647359b52e6ba04f31b21901.tar.gz postgresql-4390ba7bf937f56f647359b52e6ba04f31b21901.zip |
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.
Diffstat (limited to 'src/backend/executor/execMain.c')
0 files changed, 0 insertions, 0 deletions