From: Tomas Vondra Date: Sun, 4 Apr 2021 17:21:41 +0000 (+0200) Subject: Fix BRIN minmax-multi distance for timetz type X-Git-Tag: REL_14_BETA1~354 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7262f2421a1e099a631356f7b80ad198e34e2a8a;p=thirdparty%2Fpostgresql.git 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 --- diff --git a/src/backend/access/brin/brin_minmax_multi.c b/src/backend/access/brin/brin_minmax_multi.c index 42bb177290e..e182cd95ecd 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);