aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/adt/nabstime.c26
-rw-r--r--src/backend/utils/adt/timestamp.c37
-rw-r--r--src/test/regress/expected/horology.out6
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;