• Neil Conway's avatar
    Implement width_bucket() for the float8 data type. · cf57ef4e
    Neil Conway authored
    The implementation is somewhat ugly logic-wise, but I don't see an
    easy way to make it more concise.
    
    When writing this, I noticed that my previous implementation of
    width_bucket() doesn't handle NaN correctly:
    
        postgres=# select width_bucket('NaN', 1, 5, 5);
         width_bucket
        --------------
                    6
        (1 row)
    
    AFAICS SQL:2003 does not define a NaN value, so it doesn't address how
    width_bucket() should behave here. The patch changes width_bucket() so
    that ereport(ERROR) is raised if NaN is specified for the operand or the
    lower or upper bounds to width_bucket(). For float8, NaN is disallowed
    for any of the floating-point inputs, and +/- infinity is disallowed
    for the histogram bounds (but allowed for the operand).
    
    Update docs and regression tests, bump the catversion.
    cf57ef4e
float.c 59.8 KB