diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/utils/adt/nabstime.c | 26 | ||||
-rw-r--r-- | src/backend/utils/adt/timestamp.c | 37 | ||||
-rw-r--r-- | src/test/regress/expected/horology.out | 6 |
3 files changed, 9 insertions, 60 deletions
diff --git a/src/backend/utils/adt/nabstime.c b/src/backend/utils/adt/nabstime.c index 32f1726402e..919e6dc99f2 100644 --- a/src/backend/utils/adt/nabstime.c +++ b/src/backend/utils/adt/nabstime.c @@ -100,15 +100,7 @@ abstime2tm(AbsoluteTime _time, int *tzp, struct pg_tm * tm, char **tzn) pg_time_t time = (pg_time_t) _time; struct pg_tm *tx; - /* - * If HasCTZSet is true then we have a brute force time zone specified. Go - * ahead and rotate to the local time zone since we will later bypass any - * calls which adjust the tm fields. - */ - if (HasCTZSet && (tzp != NULL)) - time -= CTimeZone; - - if (!HasCTZSet && tzp != NULL) + if (tzp != NULL) tx = pg_localtime(&time, session_timezone); else tx = pg_gmtime(&time); @@ -126,21 +118,6 @@ abstime2tm(AbsoluteTime _time, int *tzp, struct pg_tm * tm, char **tzn) if (tzp != NULL) { - /* - * We have a brute force time zone per SQL99? Then use it without - * change since we have already rotated to the time zone. - */ - if (HasCTZSet) - { - *tzp = CTimeZone; - tm->tm_gmtoff = CTimeZone; - tm->tm_isdst = 0; - tm->tm_zone = NULL; - if (tzn != NULL) - *tzn = NULL; - } - else - { *tzp = -tm->tm_gmtoff; /* tm_gmtoff is Sun/DEC-ism */ /* @@ -161,7 +138,6 @@ abstime2tm(AbsoluteTime _time, int *tzp, struct pg_tm * tm, char **tzn) errmsg("invalid time zone name: \"%s\"", tm->tm_zone))); } - } } else tm->tm_isdst = -1; diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c index 94b2a3608a6..c3c71b72810 100644 --- a/src/backend/utils/adt/timestamp.c +++ b/src/backend/utils/adt/timestamp.c @@ -1498,8 +1498,7 @@ dt2time(Timestamp jd, int *hour, int *min, int *sec, fsec_t *fsec) * 0 on success * -1 on out of range * - * If attimezone is NULL, the global timezone (including possibly brute forced - * timezone) will be used. + * If attimezone is NULL, the global timezone setting will be used. */ int timestamp2tm(Timestamp dt, int *tzp, struct pg_tm * tm, fsec_t *fsec, const char **tzn, pg_tz *attimezone) @@ -1508,19 +1507,9 @@ timestamp2tm(Timestamp dt, int *tzp, struct pg_tm * tm, fsec_t *fsec, const char Timestamp time; pg_time_t utime; - /* - * If HasCTZSet is true then we have a brute force time zone specified. Go - * ahead and rotate to the local time zone since we will later bypass any - * calls which adjust the tm fields. - */ - if (attimezone == NULL && HasCTZSet && tzp != NULL) - { -#ifdef HAVE_INT64_TIMESTAMP - dt -= CTimeZone * USECS_PER_SEC; -#else - dt -= CTimeZone; -#endif - } + /* Use session timezone if caller asks for default */ + if (attimezone == NULL) + attimezone = session_timezone; #ifdef HAVE_INT64_TIMESTAMP time = dt; @@ -1590,21 +1579,6 @@ recalc_t: } /* - * We have a brute force time zone per SQL99? Then use it without change - * since we have already rotated to the time zone. - */ - if (attimezone == NULL && HasCTZSet) - { - *tzp = CTimeZone; - tm->tm_isdst = 0; - tm->tm_gmtoff = CTimeZone; - tm->tm_zone = NULL; - if (tzn != NULL) - *tzn = NULL; - return 0; - } - - /* * If the time falls within the range of pg_time_t, use pg_localtime() to * rotate to the local time zone. * @@ -1624,8 +1598,7 @@ recalc_t: utime = (pg_time_t) dt; if ((Timestamp) utime == dt) { - struct pg_tm *tx = pg_localtime(&utime, - attimezone ? attimezone : session_timezone); + struct pg_tm *tx = pg_localtime(&utime, attimezone); tm->tm_year = tx->tm_year + 1900; tm->tm_mon = tx->tm_mon + 1; diff --git a/src/test/regress/expected/horology.out b/src/test/regress/expected/horology.out index 2666deea88b..3ed9c8c1a09 100644 --- a/src/test/regress/expected/horology.out +++ b/src/test/regress/expected/horology.out @@ -2959,9 +2959,9 @@ SELECT '2012-12-12 12:00 America/New_York'::timestamptz; (1 row) SELECT to_char('2012-12-12 12:00'::timestamptz, 'YYYY-MM-DD HH:MI:SS TZ'); - to_char ----------------------- - 2012-12-12 12:00:00 + to_char +---------------------------- + 2012-12-12 12:00:00 -01:30 (1 row) RESET TIME ZONE; |