mirror of
https://github.com/postgres/postgres.git
synced 2026-02-18 01:59:53 -05:00
Due to rather sloppy thinking (on my part, I'm afraid) about the appropriate behavior for boundary conditions, pg_next_dst_boundary() gave undefined, platform-dependent results when the input time is exactly the last recorded DST transition time for the specified time zone, as a result of fetching values one past the end of its data arrays. Change its specification to be that it always finds the next DST boundary *after* the input time, and adjust code to match that. The sole existing caller, DetermineTimeZoneOffset, doesn't actually care about this distinction, since it always uses a probe time earlier than the instant that it does care about. So it seemed best to me to change the API to make the result=1 and result=0 cases more consistent, specifically to ensure that the "before" outputs always describe the state at the given time, rather than hacking the code to obey the previous API comment exactly. Per bug #6605 from Sergey Burladyan. Back-patch to all supported versions. |
||
|---|---|---|
| .. | ||
| data | ||
| tznames | ||
| .gitignore | ||
| ialloc.c | ||
| localtime.c | ||
| Makefile | ||
| pgtz.c | ||
| pgtz.h | ||
| private.h | ||
| README | ||
| scheck.c | ||
| strftime.c | ||
| tzfile.h | ||
| zic.c | ||
src/timezone/README Timezone ======== This is a PostgreSQL adapted version of the timezone library from http://www.iana.org/time-zones The source code can be found at: ftp://ftp.iana.org/tz/releases/tzcode*.tar.gz The code is currently synced with release 2010c. There are many cosmetic (and not so cosmetic) differences from the original tzcode library, but diffs in the upstream version should usually be propagated to our version. The data files under data/ are an exact copy of the latest data set from: ftp://ftp.iana.org/tz/releases/tzdata*.tar.gz Since time zone rules change frequently in some parts of the world, we should endeavor to update the data files before each PostgreSQL release. At each update, we should check if time zone offsets have changed. Just search for the current or previous year and see what has changed. Sometimes a country changes its time zone offsets, for example Georgia in 2004. Just grepping in the zic database files for 2004 is enough to spot such a change. Then the files under tznames/ should be updated. When there has been a new release of Windows (probably including Service Packs), the list of matching timezones need to be updated. Run the script in src/tools/win32tzlist.pl on a Windows machine running this new release and apply any new timezones that it detects. Never remove any mappings in case they are removed in Windows, since we still need to match properly on the old version.