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
>
>