• Tom Lane's avatar
    Sync behavior of var_samp and stddev_samp for single NaN inputs. · 23cbeda5
    Tom Lane authored
    var_samp(numeric) and stddev_samp(numeric) disagreed with their float
    cousins about what to do for a single non-null input value that is NaN.
    The float versions return NULL on the grounds that the calculation is
    only defined for more than one non-null input, which seems like the
    right answer.  But the numeric versions returned NaN, as a result of
    dealing with edge cases in the wrong order.  Fix that.  The patch
    also gets rid of an insignificant memory leak in such cases.
    
    This inconsistency is of long standing, but on the whole it seems best
    not to back-patch the change into stable branches; nobody's complained
    and it's such an obscure point that nobody's likely to complain.
    (Note that v13 and v12 now contain test cases that will notice if we
    accidentally back-patch this behavior change in future.)
    
    Report and patch by me; thanks to Dean Rasheed for review.
    
    Discussion: https://postgr.es/m/353062.1591898766@sss.pgh.pa.us
    23cbeda5
aggregates.out 77.5 KB