Thread: [PATCH] Add TimeOffset and DateOffset typedefs

[PATCH] Add TimeOffset and DateOffset typedefs

From
Warren Turkal
Date:
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, 18 insertions(+), 63 deletions(-)
 

diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c
index 2883caf..f70f86b 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(Timestampdt, 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;
@@ -1332,11 +1316,7 @@ timestamptz_to_str(TimestampTz t)voiddt2time(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;
@@ -1537,13 +1517,8 @@ recalc_t:inttm2timestamp(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))
 
@@ -1586,13 +1561,8 @@ tm2timestamp(struct pg_tm * tm, fsec_t fsec, int *tzp, Timestamp *result)intinterval2tm(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;
@@ -1648,19 +1618,13 @@ tm2interval(struct pg_tm * tm, fsec_t fsec, Interval *span)    return 0;}
+static TimeOffset#ifdef HAVE_INT64_TIMESTAMP
-static int64
-time2t(const int hour, const int min, const int sec, const fsec_t fsec)
-{    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 Timestampdt2local(Timestamp dt, int tz)
@@ -2032,13 +1996,8 @@ timestamptz_cmp_timestamp(PG_FUNCTION_ARGS)static intinterval_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;
@@ -2378,11 +2337,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));
@@ -2450,11 +2405,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 6eec76d..6a404a1 100644
--- a/src/include/utils/timestamp.h
+++ b/src/include/utils/timestamp.h
@@ -36,9 +36,13 @@#ifdef HAVE_INT64_TIMESTAMPtypedef int64 Timestamp;typedef int64 TimestampTz;
+typedef int64 TimeOffset;
+typedef int   DateOffset;#elsetypedef double Timestamp;typedef double TimestampTz;
+typedef double TimeOffset;
+typedef double DateOffset;#endiftypedef struct
-- 
1.5.2.5



Re: [PATCH] Add TimeOffset and DateOffset typedefs

From
"Warren Turkal"
Date:
This patch is in error. Please ignore. I have already sent the corrected patch.

Thanks,
wt

On Jan 22, 2008 12:50 PM, Warren Turkal <turkal@google.com> wrote:
> 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, 18 insertions(+), 63 deletions(-)
>
> diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c
> index 2883caf..f70f86b 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;
> @@ -1332,11 +1316,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;
>
> @@ -1537,13 +1517,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))
> @@ -1586,13 +1561,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;
> @@ -1648,19 +1618,13 @@ tm2interval(struct pg_tm * tm, fsec_t fsec, Interval *span)
>         return 0;
>  }
>
> +static TimeOffset
>  #ifdef HAVE_INT64_TIMESTAMP
> -static int64
> -time2t(const int hour, const int min, const int sec, const fsec_t fsec)
> -{
>         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)
> @@ -2032,13 +1996,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;
> @@ -2378,11 +2337,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));
> @@ -2450,11 +2405,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 6eec76d..6a404a1 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
>
>