From aefd39fcb7be90aee8d55c23d71730e27ecf66b3 Mon Sep 17 00:00:00 2001
From: Tomas Vondra <tomas.vondra@postgresql.org>
Date: Tue, 17 Oct 2023 20:32:33 +0200
Subject: [PATCH 6/8] Add test for BRIN minmax-multi with extreme interval
 values

Tries to build index on interval columns with extreme values, to make
sure the distance calculation works.
---
 src/test/regress/expected/brin_multi.out | 21 +++++++++++++++++++++
 src/test/regress/sql/brin_multi.sql      | 24 ++++++++++++++++++++++++
 2 files changed, 45 insertions(+)

diff --git a/src/test/regress/expected/brin_multi.out b/src/test/regress/expected/brin_multi.out
index fad0c536b9a..e07042cd8a1 100644
--- a/src/test/regress/expected/brin_multi.out
+++ b/src/test/regress/expected/brin_multi.out
@@ -956,3 +956,24 @@ SELECT * FROM brin_date_test WHERE a = '1900-01-01'::date;
 DROP TABLE brin_date_test;
 RESET enable_seqscan;
 RESET datestyle;
+-- test handling of overflow for interval values
+CREATE TABLE brin_interval_test(a INTERVAL);
+INSERT INTO brin_interval_test VALUES
+('-177999985 years'), ('177999985 years'),
+('-177999986 years'), ('177999986 years'),
+('-177999987 years'), ('177999987 years'),
+('-177999988 years'), ('177999988 years'),
+('-177999989 years'), ('177999989 years'),
+('-177999990 years'), ('177999990 years'),
+('-177999991 years'), ('177999991 years'),
+('-177999992 years'), ('177999992 years'),
+('-177999993 years'), ('177999993 years'),
+('-177999994 years'), ('177999994 years'),
+('-177999995 years'), ('177999995 years'),
+('-177999996 years'), ('177999996 years'),
+('-177999997 years'), ('177999997 years'),
+('-177999998 years'), ('177999998 years'),
+('-177999999 years'), ('177999999 years'),
+('-178000000 years'), ('178000000 years');
+CREATE INDEX ON brin_interval_test USING brin (a interval_minmax_multi_ops) WITH (pages_per_range=1);
+DROP TABLE brin_interval_test;
diff --git a/src/test/regress/sql/brin_multi.sql b/src/test/regress/sql/brin_multi.sql
index 25f939325f9..302b41e7fd0 100644
--- a/src/test/regress/sql/brin_multi.sql
+++ b/src/test/regress/sql/brin_multi.sql
@@ -705,3 +705,27 @@ SELECT * FROM brin_date_test WHERE a = '1900-01-01'::date;
 DROP TABLE brin_date_test;
 RESET enable_seqscan;
 RESET datestyle;
+
+-- test handling of overflow for interval values
+CREATE TABLE brin_interval_test(a INTERVAL);
+
+INSERT INTO brin_interval_test VALUES
+('-177999985 years'), ('177999985 years'),
+('-177999986 years'), ('177999986 years'),
+('-177999987 years'), ('177999987 years'),
+('-177999988 years'), ('177999988 years'),
+('-177999989 years'), ('177999989 years'),
+('-177999990 years'), ('177999990 years'),
+('-177999991 years'), ('177999991 years'),
+('-177999992 years'), ('177999992 years'),
+('-177999993 years'), ('177999993 years'),
+('-177999994 years'), ('177999994 years'),
+('-177999995 years'), ('177999995 years'),
+('-177999996 years'), ('177999996 years'),
+('-177999997 years'), ('177999997 years'),
+('-177999998 years'), ('177999998 years'),
+('-177999999 years'), ('177999999 years'),
+('-178000000 years'), ('178000000 years');
+
+CREATE INDEX ON brin_interval_test USING brin (a interval_minmax_multi_ops) WITH (pages_per_range=1);
+DROP TABLE brin_interval_test;
-- 
2.41.0

