pgsql: Handle numeric overflow when handling range values

From: Tomas Vondra <tomas(dot)vondra(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Handle numeric overflow when handling range values
Date: 2026-11-05 14:51:58
Message-ID: E1xOyoo-00000000KNg-470b@gemulon.postgresql.org
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Handle numeric overflow when handling range values

The numrange_subdiff() function was calculating the difference simply by
calling numeric_sub and numeric_float8, but those functions are not
overflow-safe. It's possible to insert valid numeric ranges for which
the difference overflows either numeric or float8.

The overflow may affect various operations on numrange columns. It may
cause failures during ANALYZE on the table, inserts into GiST indexes,
selectivity estimation, and possibly other operations.

Fixed by handling overflows in numrange_subdiff() - extreme differences
are treated as infinity.

Author: Kirill Reshke <reshkekirill(at)gmail(dot)com>
Reviewed-by: shihao zhong <zhong950419(at)gmail(dot)com>
Backpatch-through: 14
Discussion: https://postgr.es/m/CALdSSPgBvXz-VSF0p-5k%3D_uFfN38cWrERmm_AC4K67N6MWQhmg%40mail.gmail.com

Branch
------
REL_14_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/52f418f1f8acbbe44c3ff267ece6082ee61fff9f

Modified Files
--------------
src/backend/utils/adt/rangetypes.c | 37 ++++++++++++++++++++++-----
src/test/regress/expected/multirangetypes.out | 7 +++++
src/test/regress/sql/multirangetypes.sql | 9 +++++++
3 files changed, 46 insertions(+), 7 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Heikki Linnakangas 2026-11-05 15:10:39 pgsql: Remove obsolete comment from AddBufferToRing()
Previous Message Tomas Vondra 2026-11-05 14:51:49 pgsql: Handle numeric overflow when handling range values