diff options
author | Bruce Momjian | 2005-04-19 03:13:59 +0000 |
---|---|---|
committer | Bruce Momjian | 2005-04-19 03:13:59 +0000 |
commit | aa8bdab272b6def93864797a31ebe34814d0f4bb (patch) | |
tree | 4395ef4ac32929e0cea131cb956372eff140144a /src/include/pgtime.h | |
parent | dd39dd232f608fdbaa029992eb6696a04f27459d (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.h | 17 |
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 */ |