From e797a3524928bbd659656d4c4a76d0ed4df26146 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 9 Sep 2005 06:46:14 +0000 Subject: [PATCH] timestamptz_izone should return the input, not NULL, when the input is a non-finite timestamp, for consistency with related functions. In other words: +infinity rotated to a different timezone is still +infinity. --- src/backend/utils/adt/timestamp.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c index df15e2dc31..affcbba8ab 100644 --- a/src/backend/utils/adt/timestamp.c +++ b/src/backend/utils/adt/timestamp.c @@ -1897,18 +1897,14 @@ timestamp_mi(PG_FUNCTION_ARGS) result = (Interval *) palloc(sizeof(Interval)); if (TIMESTAMP_NOT_FINITE(dt1) || TIMESTAMP_NOT_FINITE(dt2)) - { ereport(ERROR, (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), errmsg("cannot subtract infinite timestamps"))); - result->time = 0; - } - else #ifdef HAVE_INT64_TIMESTAMP - result->time = dt1 - dt2; + result->time = dt1 - dt2; #else - result->time = JROUND(dt1 - dt2); + result->time = JROUND(dt1 - dt2); #endif result->month = 0; @@ -4196,7 +4192,7 @@ timestamptz_izone(PG_FUNCTION_ARGS) int tz; if (TIMESTAMP_NOT_FINITE(timestamp)) - PG_RETURN_NULL(); + PG_RETURN_TIMESTAMP(timestamp); if (zone->month != 0) ereport(ERROR, -- 2.39.5