diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2005-09-09 06:46:14 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2005-09-09 06:46:14 +0000 |
commit | f2ebd01ef02968c03c3886296de3242bbc5f817d (patch) | |
tree | bb9f5eed08d5d8a4f21eebbcfdb5609ea8fee1c5 | |
parent | a239af02c3585f4355737230bc54902e8217f76e (diff) | |
download | postgresql-f2ebd01ef02968c03c3886296de3242bbc5f817d.tar.gz postgresql-f2ebd01ef02968c03c3886296de3242bbc5f817d.zip |
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.
-rw-r--r-- | src/backend/utils/adt/timestamp.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c index b2d6f774c2f..8f18b870b5e 100644 --- a/src/backend/utils/adt/timestamp.c +++ b/src/backend/utils/adt/timestamp.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/timestamp.c,v 1.152 2005/09/09 02:31:49 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/timestamp.c,v 1.153 2005/09/09 06:46:14 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -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, |