I added TimeOffset and DateOffset typedefs to get rid of the instances
using the HAVE_INT64_TIMESTAMP define being used to determine the
types of variables or functions in timestamp.c.
---
 src/backend/utils/adt/timestamp.c |   77 +++++++-----------------------------
 src/include/utils/timestamp.h     |    4 ++
 2 files changed, 19 insertions(+), 62 deletions(-)

diff --git a/src/backend/utils/adt/timestamp.c 
b/src/backend/utils/adt/timestamp.c
index 9b90873..4759e22 100644
--- a/src/backend/utils/adt/timestamp.c
+++ b/src/backend/utils/adt/timestamp.c
@@ -44,11 +44,7 @@
 TimestampTz PgStartTime;
 
 
-#ifdef HAVE_INT64_TIMESTAMP
-static int64 time2t(const int hour, const int min, const int sec, const fsec_t 
fsec);
-#else
-static double time2t(const int hour, const int min, const int sec, const 
fsec_t fsec);
-#endif
+static TimeOffset time2t(const int hour, const int min, const int sec, const 
fsec_t fsec);
 static int     EncodeSpecialTimestamp(Timestamp dt, char *str);
 static Timestamp dt2local(Timestamp dt, int timezone);
 static void AdjustTimestampForTypmod(Timestamp *time, int32 typmod);
@@ -977,11 +973,7 @@ AdjustIntervalForTypmod(Interval *interval, int32 typmod)
                }
                else if (range == INTERVAL_MASK(MINUTE))
                {
-#ifdef HAVE_INT64_TIMESTAMP
-                       int64           hour;
-#else
-                       double          hour;
-#endif
+                       TimeOffset      hour;
 
                        interval->month = 0;
                        interval->day = 0;
@@ -998,11 +990,7 @@ AdjustIntervalForTypmod(Interval *interval, int32 typmod)
                }
                else if (range == INTERVAL_MASK(SECOND))
                {
-#ifdef HAVE_INT64_TIMESTAMP
-                       int64           minute;
-#else
-                       double          minute;
-#endif
+                       TimeOffset      minute;
 
                        interval->month = 0;
                        interval->day = 0;
@@ -1076,11 +1064,7 @@ AdjustIntervalForTypmod(Interval *interval, int32 typmod)
                else if (range == (INTERVAL_MASK(MINUTE) |
                                                   INTERVAL_MASK(SECOND)))
                {
-#ifdef HAVE_INT64_TIMESTAMP
-                       int64           hour;
-#else
-                       double          hour;
-#endif
+                       TimeOffset      hour;
 
                        interval->month = 0;
                        interval->day = 0;
@@ -1342,11 +1326,7 @@ timestamptz_to_str(TimestampTz t)
 void
 dt2time(Timestamp jd, int *hour, int *min, int *sec, fsec_t *fsec)
 {
-#ifdef HAVE_INT64_TIMESTAMP
-       int64           time;
-#else
-       double          time;
-#endif
+       TimeOffset      time;
 
        time = jd;
 
@@ -1547,13 +1527,8 @@ recalc_t:
 int
 tm2timestamp(struct pg_tm * tm, fsec_t fsec, int *tzp, Timestamp *result)
 {
-#ifdef HAVE_INT64_TIMESTAMP
-       int                     date;
-       int64           time;
-#else
-       double          date,
-                               time;
-#endif
+       DateOffset      date;
+       TimeOffset      time;
 
        /* Julian day routines are not correct for negative Julian days */
        if (!IS_VALID_JULIAN(tm->tm_year, tm->tm_mon, tm->tm_mday))
@@ -1596,13 +1571,8 @@ tm2timestamp(struct pg_tm * tm, fsec_t fsec, int *tzp, 
Timestamp *result)
 int
 interval2tm(Interval span, struct pg_tm * tm, fsec_t *fsec)
 {
-#ifdef HAVE_INT64_TIMESTAMP
-       int64           time;
-       int64           tfrac;
-#else
-       double          time;
-       double          tfrac;
-#endif
+       TimeOffset      time;
+       TimeOffset      tfrac;
 
        tm->tm_year = span.month / MONTHS_PER_YEAR;
        tm->tm_mon = span.month % MONTHS_PER_YEAR;
@@ -1658,19 +1628,15 @@ tm2interval(struct pg_tm * tm, fsec_t fsec, Interval 
*span)
        return 0;
 }
 
-#ifdef HAVE_INT64_TIMESTAMP
-static int64
+static TimeOffset
 time2t(const int hour, const int min, const int sec, const fsec_t fsec)
 {
+#ifdef HAVE_INT64_TIMESTAMP
        return (((((hour * MINS_PER_HOUR) + min) * SECS_PER_MINUTE) + sec) * 
USECS_PER_SEC) + fsec;
-}      /* time2t() */
 #else
-static double
-time2t(const int hour, const int min, const int sec, const fsec_t fsec)
-{
        return (((hour * MINS_PER_HOUR) + min) * SECS_PER_MINUTE) + sec + fsec;
-}      /* time2t() */
 #endif
+}      /* time2t() */
 
 static Timestamp
 dt2local(Timestamp dt, int tz)
@@ -2042,13 +2008,8 @@ timestamptz_cmp_timestamp(PG_FUNCTION_ARGS)
 static int
 interval_cmp_internal(Interval *interval1, Interval *interval2)
 {
-#ifdef HAVE_INT64_TIMESTAMP
-       int64           span1,
+       TimeOffset      span1,
                                span2;
-#else
-       double          span1,
-                               span2;
-#endif
 
        span1 = interval1->time;
        span2 = interval2->time;
@@ -2388,11 +2349,7 @@ interval_justify_interval(PG_FUNCTION_ARGS)
        Interval   *span = PG_GETARG_INTERVAL_P(0);
        Interval   *result;
 
-#ifdef HAVE_INT64_TIMESTAMP
-       int64           wholeday;
-#else
-       double          wholeday;
-#endif
+       TimeOffset      wholeday;
        int32           wholemonth;
 
        result = (Interval *) palloc(sizeof(Interval));
@@ -2460,11 +2417,7 @@ interval_justify_hours(PG_FUNCTION_ARGS)
        Interval   *span = PG_GETARG_INTERVAL_P(0);
        Interval   *result;
 
-#ifdef HAVE_INT64_TIMESTAMP
-       int64           wholeday;
-#else
-       double          wholeday;
-#endif
+       TimeOffset      wholeday;
 
        result = (Interval *) palloc(sizeof(Interval));
        result->month = span->month;
diff --git a/src/include/utils/timestamp.h b/src/include/utils/timestamp.h
index 34e6644..63e033c 100644
--- a/src/include/utils/timestamp.h
+++ b/src/include/utils/timestamp.h
@@ -36,9 +36,13 @@
 #ifdef HAVE_INT64_TIMESTAMP
 typedef int64 Timestamp;
 typedef int64 TimestampTz;
+typedef int64 TimeOffset;
+typedef int   DateOffset;
 #else
 typedef double Timestamp;
 typedef double TimestampTz;
+typedef double TimeOffset;
+typedef double DateOffset;
 #endif
 
 typedef struct
-- 
1.5.2.5


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to