• Tom Lane's avatar
    Undo mistaken tightening in join_is_legal(). · cfe30a72
    Tom Lane authored
    One of the changes I made in commit 8703059c 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 c1711764, 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.
    cfe30a72
join.sql 45.8 KB