summaryrefslogtreecommitdiff
path: root/src/include/pgtime.h
diff options
context:
space:
mode:
authorBruce Momjian2005-04-19 03:13:59 +0000
committerBruce Momjian2005-04-19 03:13:59 +0000
commitaa8bdab272b6def93864797a31ebe34814d0f4bb (patch)
tree4395ef4ac32929e0cea131cb956372eff140144a /src/include/pgtime.h
parentdd39dd232f608fdbaa029992eb6696a04f27459d (diff)
Attached patch gets rid of the global timezone in the following steps:
* Changes the APIs to the timezone functions to take a pg_tz pointer as an argument, representing the timezone to use for the selected operation. * Adds a global_timezone variable that represents the current timezone in the backend as set by SET TIMEZONE (or guc, or env, etc). * Implements a hash-table cache of loaded tables, so we don't have to read and parse the TZ file everytime we change a timezone. While not necesasry now (we don't change timezones very often), I beleive this will be necessary (or at least good) when "multiple timezones in the same query" is eventually implemented. And code-wise, this was the time to do it. There are no user-visible changes at this time. Implementing the "multiple zones in one query" is a later step... This also gets rid of some of the cruft needed to "back out a timezone change", since we previously couldn't check a timezone unless it was activated first. Passes regression tests on win32, linux (slackware 10) and solaris x86. Magnus Hagander
Diffstat (limited to 'src/include/pgtime.h')
-rw-r--r--src/include/pgtime.h17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/include/pgtime.h b/src/include/pgtime.h
index 8b38945f4cb..b3322234e19 100644
--- a/src/include/pgtime.h
+++ b/src/include/pgtime.h
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/include/pgtime.h,v 1.6 2004/12/31 22:03:19 pgsql Exp $
+ * $PostgreSQL: pgsql/src/include/pgtime.h,v 1.7 2005/04/19 03:13:59 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -37,21 +37,24 @@ struct pg_tm
const char *tm_zone;
};
-extern struct pg_tm *pg_localtime(const pg_time_t *timep);
+typedef struct pg_tz pg_tz;
+
+extern struct pg_tm *pg_localtime(const pg_time_t *timep, const pg_tz *tz);
extern struct pg_tm *pg_gmtime(const pg_time_t *timep);
extern int pg_next_dst_boundary(const pg_time_t *timep,
long int *before_gmtoff,
int *before_isdst,
pg_time_t *boundary,
long int *after_gmtoff,
- int *after_isdst);
+ int *after_isdst,
+ const pg_tz *tz);
extern size_t pg_strftime(char *s, size_t max, const char *format,
const struct pg_tm * tm);
extern void pg_timezone_initialize(void);
-extern bool pg_tzset(const char *tzname);
-extern bool tz_acceptable(void);
-extern const char *select_default_timezone(void);
-extern const char *pg_get_current_timezone(void);
+extern pg_tz *pg_tzset(const char *tzname);
+extern bool tz_acceptable(pg_tz *tz);
+extern const char *pg_get_timezone_name(pg_tz *tz);
+extern pg_tz *global_timezone;
#endif /* _PGTIME_H */