aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/adt/datetime.c5
-rw-r--r--src/backend/utils/adt/nabstime.c193
-rw-r--r--src/backend/utils/adt/timestamp.c10
-rw-r--r--src/backend/utils/init/globals.c4
-rw-r--r--src/include/miscadmin.h10
5 files changed, 43 insertions, 179 deletions
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 625ac11bccb..8978cb534f7 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/datetime.c,v 1.101 2003/02/20 05:24:55 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/datetime.c,v 1.102 2003/02/22 05:57:44 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1604,8 +1604,9 @@ DetermineLocalTimeZone(struct tm * tm)
tz = (int) delta2;
}
#else /* not (HAVE_TM_ZONE || HAVE_INT_TIMEZONE) */
+ /* Assume UTC if no system timezone info available */
tm->tm_isdst = 0;
- tz = CTimeZone;
+ tz = 0;
#endif
}
else
diff --git a/src/backend/utils/adt/nabstime.c b/src/backend/utils/adt/nabstime.c
index e6fa5a21fc0..408b1ee14dd 100644
--- a/src/backend/utils/adt/nabstime.c
+++ b/src/backend/utils/adt/nabstime.c
@@ -1,4 +1,5 @@
/*-------------------------------------------------------------------------
+ *
* nabstime.c
* Utilities for the built-in type "AbsoluteTime".
* Functions for the built-in type "RelativeTime".
@@ -9,9 +10,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/nabstime.c,v 1.103 2003/02/20 05:24:55 tgl Exp $
- *
- * NOTES
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/nabstime.c,v 1.104 2003/02/22 05:57:45 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -23,10 +22,6 @@
#include <float.h>
#include <limits.h>
-#if !(defined(HAVE_TM_ZONE) || defined(HAVE_INT_TIMEZONE))
-#include <sys/timeb.h>
-#endif
-
#include "access/xact.h"
#include "miscadmin.h"
#include "utils/builtins.h"
@@ -88,78 +83,25 @@ static int istinterval(char *i_string,
/* GetCurrentAbsoluteTime()
- * Get the current system time. Set timezone parameters if not specified elsewhere.
- * Define HasCTZSet to allow clients to specify the default timezone.
+ * Get the current system time.
*
- * Returns the number of seconds since epoch (January 1 1970 GMT)
+ * Returns the number of seconds since epoch (January 1 1970 GMT).
*/
AbsoluteTime
GetCurrentAbsoluteTime(void)
{
time_t now;
-#if defined(HAVE_TM_ZONE) || defined(HAVE_INT_TIMEZONE)
- struct tm *tm;
-
now = time(NULL);
-#else
- struct timeb tb; /* the old V7-ism */
-
- ftime(&tb);
- now = tb.time;
-#endif
-
- if (!HasCTZSet)
- {
-#if defined(HAVE_TM_ZONE)
- tm = localtime(&now);
-
- CTimeZone = -tm->tm_gmtoff; /* tm_gmtoff is Sun/DEC-ism */
- CDayLight = (tm->tm_isdst > 0);
-
-#ifdef NOT_USED
-
- /*
- * XXX is there a better way to get local timezone string w/o
- * tzname? - tgl 97/03/18
- */
- strftime(CTZName, MAXTZLEN, "%Z", tm);
-#endif
-
- /*
- * XXX FreeBSD man pages indicate that this should work - thomas
- * 1998-12-12
- */
- StrNCpy(CTZName, tm->tm_zone, MAXTZLEN+1);
-
-#elif defined(HAVE_INT_TIMEZONE)
- tm = localtime(&now);
-
- CDayLight = tm->tm_isdst;
- CTimeZone = ((tm->tm_isdst > 0) ? (TIMEZONE_GLOBAL - 3600) : TIMEZONE_GLOBAL);
- StrNCpy(CTZName, tzname[tm->tm_isdst], MAXTZLEN+1);
-#else /* neither HAVE_TM_ZONE nor
- * HAVE_INT_TIMEZONE */
- CTimeZone = tb.timezone * 60;
- CDayLight = (tb.dstflag != 0);
-
- /*
- * XXX does this work to get the local timezone string in V7? -
- * tgl 97/03/18
- */
- strftime(CTZName, MAXTZLEN, "%Z", localtime(&now));
-#endif
- }
-
return (AbsoluteTime) now;
-} /* GetCurrentAbsoluteTime() */
+}
/* GetCurrentAbsoluteTimeUsec()
- * Get the current system time. Set timezone parameters if not specified elsewhere.
- * Define HasCTZSet to allow clients to specify the default timezone.
+ * Get the current system time.
*
- * Returns the number of seconds since epoch (January 1 1970 GMT)
+ * Returns the number of seconds since epoch (January 1 1970 GMT),
+ * and returns fractional seconds (as # of microseconds) into *usec.
*/
AbsoluteTime
GetCurrentAbsoluteTimeUsec(int *usec)
@@ -167,85 +109,28 @@ GetCurrentAbsoluteTimeUsec(int *usec)
time_t now;
struct timeval tp;
-#ifdef NOT_USED
- struct timezone tpz;
-#endif
-#if defined(HAVE_TM_ZONE) || defined(HAVE_INT_TIMEZONE)
- struct tm *tm;
-
-#else
- struct timeb tb; /* the old V7-ism */
-#endif
-
gettimeofday(&tp, NULL);
-
now = tp.tv_sec;
*usec = tp.tv_usec;
-
-#ifdef NOT_USED
-#if defined(HAVE_TM_ZONE) || defined(HAVE_INT_TIMEZONE)
- now = time(NULL);
-#else
- ftime(&tb);
- now = tb.time;
-#endif
-#endif
-
- if (!HasCTZSet)
- {
-#if defined(HAVE_TM_ZONE)
- tm = localtime(&now);
-
- CTimeZone = -tm->tm_gmtoff; /* tm_gmtoff is Sun/DEC-ism */
- CDayLight = (tm->tm_isdst > 0);
-
-#ifdef NOT_USED
-
- /*
- * XXX is there a better way to get local timezone string w/o
- * tzname? - tgl 97/03/18
- */
- strftime(CTZName, MAXTZLEN, "%Z", tm);
-#endif
-
- /*
- * XXX FreeBSD man pages indicate that this should work - thomas
- * 1998-12-12
- */
- StrNCpy(CTZName, tm->tm_zone, MAXTZLEN+1);
-
-#elif defined(HAVE_INT_TIMEZONE)
- tm = localtime(&now);
-
- CDayLight = tm->tm_isdst;
- CTimeZone = ((tm->tm_isdst > 0) ? (TIMEZONE_GLOBAL - 3600) : TIMEZONE_GLOBAL);
- StrNCpy(CTZName, tzname[tm->tm_isdst], MAXTZLEN+1);
-#else /* neither HAVE_TM_ZONE nor
- * HAVE_INT_TIMEZONE */
- CTimeZone = tb.timezone * 60;
- CDayLight = (tb.dstflag != 0);
-
- /*
- * XXX does this work to get the local timezone string in V7? -
- * tgl 97/03/18
- */
- strftime(CTZName, MAXTZLEN, "%Z", localtime(&now));
-#endif
- };
-
return (AbsoluteTime) now;
-} /* GetCurrentAbsoluteTimeUsec() */
+}
+/* GetCurrentDateTime()
+ * Get the transaction start time ("now()") broken down as a struct tm.
+ */
void
GetCurrentDateTime(struct tm * tm)
{
int tz;
abstime2tm(GetCurrentTransactionStartTime(), &tz, tm, NULL);
-} /* GetCurrentDateTime() */
-
+}
+/* GetCurrentTimeUsec()
+ * Get the transaction start time ("now()") broken down as a struct tm,
+ * plus fractional-second and timezone info.
+ */
void
GetCurrentTimeUsec(struct tm * tm, fsec_t *fsec, int *tzp)
{
@@ -253,7 +138,7 @@ GetCurrentTimeUsec(struct tm * tm, fsec_t *fsec, int *tzp)
int usec;
abstime2tm(GetCurrentTransactionStartTimeUsec(&usec), &tz, tm, NULL);
- /* Note: don't pass NULL tzp directly to abstime2tm */
+ /* Note: don't pass NULL tzp to abstime2tm; affects behavior */
if (tzp != NULL)
*tzp = tz;
#ifdef HAVE_INT64_TIMESTAMP
@@ -261,23 +146,15 @@ GetCurrentTimeUsec(struct tm * tm, fsec_t *fsec, int *tzp)
#else
*fsec = usec * 1.0e-6;
#endif
-} /* GetCurrentTimeUsec() */
+}
void
abstime2tm(AbsoluteTime _time, int *tzp, struct tm * tm, char **tzn)
{
time_t time = (time_t) _time;
-
-#if defined(HAVE_TM_ZONE) || defined(HAVE_INT_TIMEZONE)
struct tm *tx;
-#else
- struct timeb tb; /* the old V7-ism */
-
- ftime(&tb);
-#endif
-
/*
* 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
@@ -286,7 +163,6 @@ abstime2tm(AbsoluteTime _time, int *tzp, struct tm * tm, char **tzn)
if (HasCTZSet && (tzp != NULL))
time -= CTimeZone;
-#if defined(HAVE_TM_ZONE) || defined(HAVE_INT_TIMEZONE)
if ((!HasCTZSet) && (tzp != NULL))
tx = localtime((time_t *) &time);
else
@@ -336,7 +212,8 @@ abstime2tm(AbsoluteTime _time, int *tzp, struct tm * tm, char **tzn)
*/
StrNCpy(*tzn, tm->tm_zone, MAXTZLEN + 1);
if (strlen(tm->tm_zone) > MAXTZLEN)
- elog(WARNING, "Invalid timezone \'%s\'", tm->tm_zone);
+ elog(WARNING, "Invalid timezone \'%s\'",
+ tm->tm_zone);
}
}
}
@@ -369,13 +246,13 @@ abstime2tm(AbsoluteTime _time, int *tzp, struct tm * tm, char **tzn)
*/
StrNCpy(*tzn, tzname[tm->tm_isdst], MAXTZLEN + 1);
if (strlen(tzname[tm->tm_isdst]) > MAXTZLEN)
- elog(WARNING, "Invalid timezone \'%s\'", tzname[tm->tm_isdst]);
+ elog(WARNING, "Invalid timezone \'%s\'",
+ tzname[tm->tm_isdst]);
}
}
}
else
tm->tm_isdst = -1;
-#endif
#else /* not (HAVE_TM_ZONE || HAVE_INT_TIMEZONE) */
if (tzp != NULL)
{
@@ -391,26 +268,16 @@ abstime2tm(AbsoluteTime _time, int *tzp, struct tm * tm, char **tzn)
}
else
{
- *tzp = tb.timezone * 60;
-
- /*
- * XXX does this work to get the local timezone string in V7?
- * - tgl 97/03/18
- */
+ /* default to UTC */
+ *tzp = 0;
if (tzn != NULL)
- {
- strftime(*tzn, MAXTZLEN, "%Z", localtime(&now));
- tzn[MAXTZLEN] = '\0'; /* let's just be sure it's
- * null-terminated */
- }
+ *tzn = NULL;
}
}
else
tm->tm_isdst = -1;
#endif
-
- return;
-} /* abstime2tm() */
+}
/* tm2abstime()
@@ -451,7 +318,7 @@ tm2abstime(struct tm * tm, int tz)
return INVALID_ABSTIME;
return sec;
-} /* tm2abstime() */
+}
/* nabstimein()
@@ -888,9 +755,7 @@ reltime2tm(RelativeTime time, struct tm * tm)
TMODULO(time, tm->tm_hour, 3600);
TMODULO(time, tm->tm_min, 60);
TMODULO(time, tm->tm_sec, 1);
-
- return;
-} /* reltime2tm() */
+}
/*
diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c
index bb094707a6f..6d63eef7a3b 100644
--- a/src/backend/utils/adt/timestamp.c
+++ b/src/backend/utils/adt/timestamp.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/timestamp.c,v 1.77 2003/01/22 20:44:20 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/timestamp.c,v 1.78 2003/02/22 05:57:45 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -808,11 +808,13 @@ timestamp2tm(Timestamp dt, int *tzp, struct tm * tm, fsec_t *fsec, char **tzn)
* later bypass any calls which adjust the tm fields.
*/
if (HasCTZSet && (tzp != NULL))
+ {
#ifdef HAVE_INT64_TIMESTAMP
dt -= (CTimeZone * INT64CONST(1000000));
#else
dt -= CTimeZone;
#endif
+ }
time = dt;
#ifdef HAVE_INT64_TIMESTAMP
@@ -908,9 +910,11 @@ timestamp2tm(Timestamp dt, int *tzp, struct tm * tm, fsec_t *fsec, char **tzn)
#endif
#else /* not (HAVE_TM_ZONE || HAVE_INT_TIMEZONE) */
- *tzp = CTimeZone; /* V7 conventions; don't know timezone? */
+ *tzp = 0;
+ /* Mark this as *no* time zone available */
+ tm->tm_isdst = -1;
if (tzn != NULL)
- *tzn = CTZName;
+ *tzn = NULL;
#endif
dt = dt2local(dt, *tzp);
diff --git a/src/backend/utils/init/globals.c b/src/backend/utils/init/globals.c
index 87a19d016d8..8a707165ec5 100644
--- a/src/backend/utils/init/globals.c
+++ b/src/backend/utils/init/globals.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/init/globals.c,v 1.68 2002/10/03 17:07:53 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/init/globals.c,v 1.69 2003/02/22 05:57:45 tgl Exp $
*
* NOTES
* Globals used all over the place should be declared here and not
@@ -62,9 +62,7 @@ bool IsUnderPostmaster = false;
int DateStyle = USE_ISO_DATES;
bool EuroDates = false;
bool HasCTZSet = false;
-bool CDayLight = false;
int CTimeZone = 0;
-char CTZName[MAXTZLEN + 1] = "";
bool enableFsync = true;
bool allowSystemTableMods = false;
diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h
index f5146926681..f8321325f6c 100644
--- a/src/include/miscadmin.h
+++ b/src/include/miscadmin.h
@@ -12,7 +12,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: miscadmin.h,v 1.115 2003/01/09 18:00:24 tgl Exp $
+ * $Id: miscadmin.h,v 1.116 2003/02/22 05:57:45 tgl Exp $
*
* NOTES
* some of the information in this file should be moved to
@@ -141,10 +141,8 @@ extern DLLIMPORT Oid MyDatabaseId;
* DateStyle specifies preference for date formatting for output.
* EuroDates if client prefers dates interpreted and written w/European conventions.
*
- * HasCTZSet if client timezone is specified by client.
- * CDayLight is the apparent daylight savings time status.
- * CTimeZone is the timezone offset in seconds.
- * CTZName is the timezone label.
+ * HasCTZSet is true if user has set timezone as a numeric offset from UTC.
+ * If so, CTimeZone is the timezone offset in seconds.
*/
#define MAXTZLEN 10 /* max TZ name len, not counting tr. null */
@@ -157,9 +155,7 @@ extern DLLIMPORT Oid MyDatabaseId;
extern int DateStyle;
extern bool EuroDates;
extern bool HasCTZSet;
-extern bool CDayLight;
extern int CTimeZone;
-extern char CTZName[];
extern bool enableFsync;
extern bool allowSystemTableMods;