• Tom Lane's avatar
    Build out the planner support function infrastructure. · a391ff3c
    Tom Lane authored
    Add support function requests for estimating the selectivity, cost,
    and number of result rows (if a SRF) of the target function.
    
    The lack of a way to estimate selectivity of a boolean-returning
    function in WHERE has been a recognized deficiency of the planner
    since Berkeley days.  This commit finally fixes it.
    
    In addition, non-constant estimates of cost and number of output
    rows are now possible.  We still fall back to looking at procost
    and prorows if the support function doesn't service the request,
    of course.
    
    To make concrete use of the possibility of estimating output rowcount
    for SRFs, this commit adds support functions for array_unnest(anyarray)
    and the integer variants of generate_series; the lack of plausible
    rowcount estimates for those, even when it's obvious to a human,
    has been a repeated subject of complaints.  Obviously, much more
    could now be done in this line, but I'm mostly just trying to get
    the infrastructure in place.
    
    Discussion: https://postgr.es/m/15193.1548028093@sss.pgh.pa.us
    a391ff3c
pathnodes.h 103 KB