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_14_STABLE
Details
-------
https://git.postgresql.org/pg/commitdiff/0fa73c5cd05093236cd6d5ff56e0bd5693d2645f
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(-)