Allow width_bucket()'s "operand" input to be NaN.
Tom Lane <tgl@sss.pgh.pa.us>
Allow width_bucket()'s "operand" input to be NaN. The array-based variant of width_bucket() has always accepted NaN inputs, treating them as equal but larger than any non-NaN, as we do in ordinary comparisons. But up to now, the four-argument variants threw errors for a NaN operand. This is inconsistent and unnecessary, since we can perfectly well regard NaN as falling after the last bucket. We do still throw error for NaN or infinity histogram-bound inputs, since there's no way to compute sensible bucket boundaries. Arguably this is a bug fix, but given the lack of field complaints I'm content to fix it in master. Author: Tom Lane <tgl@sss.pgh.pa.us> Reviewed-by: Dean Rasheed <dean.a.rasheed@gmail.com> Discussion: https://postgr.es/m/2822872.1750540911@sss.pgh.pa.us
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/utils/adt/float.c | modified | +9 −9 |
| src/backend/utils/adt/numeric.c | modified | +7 −10 |
| src/test/regress/expected/numeric.out | modified | +14 −2 |
| src/test/regress/sql/numeric.sql | modified | +2 −0 |
Discussion
- Allow the "operand" input of width_bucket() to be NaN 3 messages · 2025-06-21 → 2025-07-02