width_bucket() for float8 - Mailing list pgsql-patches

From Neil Conway
Subject width_bucket() for float8
Date
Msg-id 1168567892.5462.38.camel@localhost.localdomain
Whole thread Raw
List pgsql-patches
Attached is a patch that provides an implementation of width_bucket()
for the float8 data type, per earlier discussion. The implementation is
fairly ugly, but I don't see an easy way to simplify it.

When writing this, I noticed that my previous implementation of
width_bucket() probably 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(). I think this is reasonable
behavior -- any objections?

float8 also allows positive and negative infinity. I disallowed infinite
values for the histogram bounds, but allowed it for the operand.

-Neil


Attachment

pgsql-patches by date:

Previous
From: "Jaime Casanova"
Date:
Subject: Re: [PATCHES] Tablespace for temporary objects and sort files
Next
From: "Joshua D. Drake"
Date:
Subject: Re: [PATCHES] Tablespace for temporary objects and