mirror of
https://github.com/postgres/postgres.git
synced 2025-08-18 12:22:09 +03:00
In commit 631dc390f4
, we started to handle
simple numeric timezone offsets via the zic library instead of the old
CTimeZone/HasCTZSet kluge. However, we overlooked the fact that the zic
code will reject UTC offsets exceeding a week (which seems a bit arbitrary,
but not because it's too tight ...). This led to possibly setting
session_timezone to NULL, which results in crashes in most timezone-related
operations as of 9.4, and crashes in a small number of places even before
that. So check for NULL return from pg_tzset_offset() and report an
appropriate error message. Per bug #11014 from Duncan Gillis.
Back-patch to all supported branches, like the previous patch.
(Unfortunately, as of today that no longer includes 8.4.)
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.