pgsql: Fix minmax-multi distance for extreme interval values - Mailing list pgsql-committers

From Tomas Vondra
Subject pgsql: Fix minmax-multi distance for extreme interval values
Date
Msg-id E1qwQBQ-002dKV-EC@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Fix minmax-multi distance for extreme interval values

When calculating distance for interval values, the code mostly mimicked
interval_mi, i.e. it built a new interval value for the difference.
That however does not work for sufficiently distant interval values,
when the difference overflows the interval range.

Instead, we can calculate the distance directly, without constructing
the intermediate (and unnecessary) interval value.

Backpatch to 14, where minmax-multi indexes were introduced.

Reported-by: Dean Rasheed
Reviewed-by: Ashutosh Bapat, Dean Rasheed
Backpatch-through: 14
Discussion: https://postgr.es/m/eef0ea8c-4aaa-8d0d-027f-58b1f35dd170@enterprisedb.com

Branch
------
REL_15_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/2fbb2fcb0c63d6254aa93a1181a263df07e5c26d

Modified Files
--------------
src/backend/access/brin/brin_minmax_multi.c | 33 ++++-------------------------
src/test/regress/expected/brin_multi.out    | 29 +++++++++++++++++++++++++
src/test/regress/sql/brin_multi.sql         | 21 ++++++++++++++++++
3 files changed, 54 insertions(+), 29 deletions(-)


pgsql-committers by date:

Previous
From: Tomas Vondra
Date:
Subject: pgsql: Fix minmax-multi on infinite date/timestamp values
Next
From: Tomas Vondra
Date:
Subject: pgsql: Fix overflow when calculating timestamp distance in BRIN