]> granicus.if.org Git - postgresql/commitdiff
AdjustTimestampForTypmod does not work (at least not portably) on
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 3 Oct 2001 15:50:48 +0000 (15:50 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 3 Oct 2001 15:50:48 +0000 (15:50 +0000)
-infinity and +infinity.  Put TIMESTAMP_NOT_FINITE guard into the routine,
instead of forgetting it at some call sites.  Fixes regression test
failures here.

src/backend/utils/adt/timestamp.c

index 8bd0daf2bf65aeae96453a7ae458cf602428f2d8..112e8a26d6f0a1b8fcb4c941aa33109b3ea42b78 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/utils/adt/timestamp.c,v 1.52 2001/10/03 05:29:24 thomas Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/utils/adt/timestamp.c,v 1.53 2001/10/03 15:50:48 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -32,8 +32,7 @@
 static double time2t(const int hour, const int min, const double sec);
 static int     EncodeSpecialTimestamp(Timestamp dt, char *str);
 static Timestamp dt2local(Timestamp dt, int timezone);
-static void
-AdjustTimestampForTypmod(Timestamp *time, int32 typmod);
+static void AdjustTimestampForTypmod(Timestamp *time, int32 typmod);
 
 
 /*****************************************************************************
@@ -138,8 +137,7 @@ timestamp_scale(PG_FUNCTION_ARGS)
 
        result = timestamp;
 
-       if (! TIMESTAMP_NOT_FINITE(result))
-               AdjustTimestampForTypmod(&result, typmod);
+       AdjustTimestampForTypmod(&result, typmod);
 
        PG_RETURN_TIMESTAMP(result);
 }
@@ -147,7 +145,8 @@ timestamp_scale(PG_FUNCTION_ARGS)
 static void
 AdjustTimestampForTypmod(Timestamp *time, int32 typmod)
 {
-       if ((typmod >= 0) && (typmod <= 13))
+       if (! TIMESTAMP_NOT_FINITE(*time) &&
+               (typmod >= 0) && (typmod <= 13))
        {
                static double TimestampScale = 1;
                static int32 TimestampTypmod = 0;
@@ -157,8 +156,6 @@ AdjustTimestampForTypmod(Timestamp *time, int32 typmod)
 
                *time = (rint(((double) *time)*TimestampScale)/TimestampScale);
        }
-
-       return;
 }
 
 
@@ -261,8 +258,7 @@ timestamptz_scale(PG_FUNCTION_ARGS)
 
        result = timestamp;
 
-       if (! TIMESTAMP_NOT_FINITE(result))
-               AdjustTimestampForTypmod(&result, typmod);
+       AdjustTimestampForTypmod(&result, typmod);
 
        PG_RETURN_TIMESTAMPTZ(result);
 }