• Tom Lane's avatar
    Improve eqjoinsel's ndistinct clamping to work for multiple levels of join. · 97930cf5
    Tom Lane authored
    This patch fixes an oversight in my commit
    7f3eba30 of 2008-10-23.  That patch
    accounted for baserel restriction clauses that reduced the number of rows
    coming out of a table (and hence the number of possibly-distinct values of
    a join variable), but not for join restriction clauses that might have been
    applied at a lower level of join.  To account for the latter, look up the
    sizes of the min_lefthand and min_righthand inputs of the current join,
    and clamp with those in the same way as for the base relations.
    
    Noted while investigating a complaint from Ben Chobot, although this in
    itself doesn't seem to explain his report.
    
    Back-patch to 8.4; previous versions used different estimation methods
    for which this heuristic isn't relevant.
    97930cf5
selfuncs.c 193 KB