From 7262f2421a1e099a631356f7b80ad198e34e2a8a Mon Sep 17 00:00:00 2001 From: Tomas Vondra Date: Sun, 4 Apr 2021 19:21:41 +0200 Subject: [PATCH] Fix BRIN minmax-multi distance for timetz type The distance calculation ignored the time zone, so the result of (b-a) might have ended negative even if (b > a). Fixed by considering the time zone difference. Reported-by: Jaime Casanova Discussion: https://postgr.es/m/CAJKUy5jLZFLCxyxfT%3DMfK5mtPfSzHA1rVLowR-j4RRsFVvKm7A%40mail.gmail.com --- src/backend/access/brin/brin_minmax_multi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/access/brin/brin_minmax_multi.c b/src/backend/access/brin/brin_minmax_multi.c index 42bb177290..e182cd95ec 100644 --- a/src/backend/access/brin/brin_minmax_multi.c +++ b/src/backend/access/brin/brin_minmax_multi.c @@ -2090,7 +2090,7 @@ brin_minmax_multi_distance_timetz(PG_FUNCTION_ARGS) TimeTzADT *ta = PG_GETARG_TIMETZADT_P(0); TimeTzADT *tb = PG_GETARG_TIMETZADT_P(1); - delta = tb->time - ta->time; + delta = (tb->time - ta->time) + (tb->zone - ta->zone) * USECS_PER_SEC; Assert(delta >= 0);