• Tom Lane's avatar
    Make reduce_outer_joins() smarter about semijoins. · 9688c4e6
    Tom Lane authored
    reduce_outer_joins() mistakenly treated a semijoin like a left join for
    purposes of deciding whether not-null constraints created by the join's
    quals could be passed down into the join's left-hand side (possibly
    resulting in outer-join simplification there).  Actually, semijoin works
    like inner join for this purpose, ie, we do not need to see any rows that
    can't possibly satisfy the quals.  Hence, two-line fix to treat semi and
    inner joins alike.  Per observation by Andres Freund about a performance
    gripe from Yazan Suleiman.
    
    Back-patch to 8.4, since this oversight has been there since the current
    handling of semijoins was implemented.
    9688c4e6
prepjointree.c 68.7 KB