• Tom Lane's avatar
    Make real sure we don't reassociate joins into or out of SEMI/ANTI joins. · 6af9ee4c
    Tom Lane authored
    Per the discussion in optimizer/README, it's unsafe to reassociate anything
    into or out of the RHS of a SEMI or ANTI join.  An example from Piotr
    Stefaniak showed that join_is_legal() wasn't sufficiently enforcing this
    rule, so lock it down a little harder.
    
    I couldn't find a reasonably simple example of the optimizer trying to
    do this, so no new regression test.  (Piotr's example involved the random
    search in GEQO accidentally trying an invalid case and triggering a sanity
    check way downstream in clause selectivity estimation, which did not seem
    like a sequence of events that would be useful to memorialize in a
    regression test as-is.)
    
    Back-patch to all active branches.
    6af9ee4c
joinrels.c 35.8 KB