aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2005-09-09 06:46:14 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2005-09-09 06:46:14 +0000
commitf2ebd01ef02968c03c3886296de3242bbc5f817d (patch)
treebb9f5eed08d5d8a4f21eebbcfdb5609ea8fee1c5
parenta239af02c3585f4355737230bc54902e8217f76e (diff)
downloadpostgresql-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.c12
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,