• Tom Lane's avatar
    Fix pull_up_sublinks' failure to handle nested pull-up opportunities. · dcc685de
    Tom Lane authored
    After finding an EXISTS or ANY sub-select that can be converted to a
    semi-join or anti-join, we should recurse into the body of the sub-select.
    This allows cases such as EXISTS-within-EXISTS to be optimized properly.
    The original coding would leave the lower sub-select as a SubLink, which
    is no better and often worse than what we can do with a join.  Per example
    from Wayne Conrad.
    
    Back-patch to 8.4.  There is a related issue in older versions' handling
    of pull_up_IN_clauses, but they're lame enough anyway about the whole area
    that it seems not worth the extra work to try to fix.
    dcc685de
prepjointree.c 70.2 KB