summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2007-03-14 17:38:06 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2007-03-14 17:38:06 +0000
commit0169c354bfa02563f1aa57eee04c7fbdf69cd440 (patch)
tree7184fa4af4582c46acbcd5af5e5e8fca5f33099d
parent754148d81f9150fd860b4d5aac0eb420e4cd6886 (diff)
Arrange to install a "posixrules" entry in our timezone database, so that
POSIX-style timezone specs that don't exactly match any database entry will be treated as having correct USA DST rules. Also, document that this can be changed if you want to use some other DST rules with a POSIX zone spec. We could consider changing localtime.c's TZDEFRULESTRING, but since that facility can only deal with one DST transition rule, it seems fairly useless now; might as well just plan to override it using a "posixrules" entry. Backpatch as far as 8.0. There isn't much we can do in 7.x ... either your libc gets it right, or it doesn't.
-rw-r--r--doc/src/sgml/datatype.sgml23
-rw-r--r--src/timezone/Makefile8
2 files changed, 22 insertions, 9 deletions
diff --git a/doc/src/sgml/datatype.sgml b/doc/src/sgml/datatype.sgml
index 50d70b1cefd..2d67885fd65 100644
--- a/doc/src/sgml/datatype.sgml
+++ b/doc/src/sgml/datatype.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.190 2007/02/01 00:28:16 momjian Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.191 2007/03/14 17:38:05 tgl Exp $ -->
<chapter id="datatype">
<title id="datatype-title">Data Types</title>
@@ -2243,12 +2243,13 @@ January 8 04:05:06 1999 PST
were not already a recognized zone name, it would be accepted and would
be functionally equivalent to USA East Coast time. When a
daylight-savings zone name is present, it is assumed to be used
- according to USA time zone rules, so this feature is of limited use
- outside North America. One should also be wary that this provision can
- lead to silently accepting bogus input, since there is no check on the
- reasonableness of the zone abbreviations. For example, <literal>SET
- TIMEZONE TO FOOBAR0</> will work, leaving the system effectively using
- a rather peculiar abbreviation for GMT.
+ according to the same daylight-savings transition rules used in the
+ <literal>zic</> time zone database's <filename>posixrules</> entry.
+ In a standard <productname>PostgreSQL</productname> installation,
+ <filename>posixrules</> is the same as <literal>US/Eastern</>, so
+ that POSIX-style time zone specifications follow USA daylight-savings
+ rules. If needed, you can adjust this behavior by replacing the
+ <filename>posixrules</> file.
</para>
</listitem>
</itemizedlist>
@@ -2260,6 +2261,14 @@ January 8 04:05:06 1999 PST
</para>
<para>
+ One should be wary that the POSIX-style time zone feature can
+ lead to silently accepting bogus input, since there is no check on the
+ reasonableness of the zone abbreviations. For example, <literal>SET
+ TIMEZONE TO FOOBAR0</> will work, leaving the system effectively using
+ a rather peculiar abbreviation for UTC.
+ </para>
+
+ <para>
In all cases, timezone names are recognized case-insensitively.
(This is a change from <productname>PostgreSQL</productname> versions
prior to 8.2, which were case-sensitive in some contexts and not others.)
diff --git a/src/timezone/Makefile b/src/timezone/Makefile
index 3af8c376f89..f3d5088b4d9 100644
--- a/src/timezone/Makefile
+++ b/src/timezone/Makefile
@@ -4,7 +4,7 @@
# Makefile for the timezone library
# IDENTIFICATION
-# $PostgreSQL: pgsql/src/timezone/Makefile,v 1.25 2007/02/09 15:56:00 petere Exp $
+# $PostgreSQL: pgsql/src/timezone/Makefile,v 1.26 2007/03/14 17:38:06 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -23,6 +23,10 @@ TZDATA = africa antarctica asia australasia europe northamerica southamerica \
pacificnew etcetera factory backward systemv solar87 solar88 solar89
TZDATAFILES = $(TZDATA:%=$(srcdir)/data/%)
+# which zone should determine the DST rules (not the specific UTC offset!)
+# for POSIX-style timezone specs
+POSIXRULES = US/Eastern
+
all: SUBSYS.o submake-libpgport zic
SUBSYS.o: $(OBJS)
@@ -32,7 +36,7 @@ zic: $(ZICOBJS)
$(CC) $(CFLAGS) $(ZICOBJS) $(LDFLAGS) $(LIBS) -o $@$(X)
install: all installdirs
- ./zic -d '$(DESTDIR)$(datadir)/timezone' $(TZDATAFILES)
+ ./zic -d '$(DESTDIR)$(datadir)/timezone' -p '$(POSIXRULES)' $(TZDATAFILES)
$(MAKE) -C tznames $@
installdirs: