diff -cNr cvs/pgsql/src/backend/catalog/system_views.sql cvs.build/pgsql/src/backend/catalog/system_views.sql
*** cvs/pgsql/src/backend/catalog/system_views.sql	2006-05-21 11:01:21.000000000 +0200
--- cvs.build/pgsql/src/backend/catalog/system_views.sql	2006-07-13 18:06:01.000000000 +0200
***************
*** 169,174 ****
--- 169,179 ----
      (name text, statement text, prepare_time timestamptz,
       parameter_types regtype[], from_sql boolean);
  
+ CREATE VIEW pg_timezonenames AS
+     SELECT upper(T.name) AS name, T.gmt_offset, T.is_dst
+     FROM pg_timezonename() AS T
+     (name text, gmt_offset interval, is_dst boolean);
+ 
  CREATE VIEW pg_settings AS 
      SELECT * 
      FROM pg_show_all_settings() AS A 
diff -cNr cvs/pgsql/src/backend/postmaster/postmaster.c cvs.build/pgsql/src/backend/postmaster/postmaster.c
*** cvs/pgsql/src/backend/postmaster/postmaster.c	2006-07-10 18:53:25.000000000 +0200
--- cvs.build/pgsql/src/backend/postmaster/postmaster.c	2006-07-13 18:06:01.000000000 +0200
***************
*** 936,941 ****
--- 936,946 ----
  	load_ident();
  
  	/*
+ 	 * Load timezone offset files
+ 	 */
+ 	load_tzoffsets(PGC_POSTMASTER);
+ 
+ 	/*
  	 * We're ready to rock and roll...
  	 */
  	StartupPID = StartupDataBase();
***************
*** 1814,1819 ****
--- 1819,1827 ----
  		load_hba();
  		load_ident();
  
+ 		/* Reload timezone offset information too */
+ 		load_tzoffsets(PGC_SIGHUP);
+ 
  #ifdef EXEC_BACKEND
  		/* Update the starting-point file for future children */
  		write_nondefault_variables(PGC_SIGHUP);
diff -cNr cvs/pgsql/src/backend/tcop/postgres.c cvs.build/pgsql/src/backend/tcop/postgres.c
*** cvs/pgsql/src/backend/tcop/postgres.c	2006-07-10 18:53:25.000000000 +0200
--- cvs.build/pgsql/src/backend/tcop/postgres.c	2006-07-13 18:32:03.000000000 +0200
***************
*** 40,45 ****
--- 40,46 ----
  #include "libpq/pqformat.h"
  #include "libpq/pqsignal.h"
  #include "miscadmin.h"
+ #include "utils/tzparser.h"
  #include "nodes/print.h"
  #include "optimizer/cost.h"
  #include "optimizer/planner.h"
***************
*** 3163,3168 ****
--- 3164,3173 ----
  		{
  			got_SIGHUP = false;
  			ProcessConfigFile(PGC_SIGHUP);
+ 			/*
+ 			 * Load timezone offset files
+ 			 */
+ 			load_tzoffsets(PGC_POSTMASTER);
  		}
  
  		/*
diff -cNr cvs/pgsql/src/backend/utils/adt/datetime.c cvs.build/pgsql/src/backend/utils/adt/datetime.c
*** cvs/pgsql/src/backend/utils/adt/datetime.c	2006-06-11 20:21:38.000000000 +0200
--- cvs.build/pgsql/src/backend/utils/adt/datetime.c	2006-07-13 18:06:01.000000000 +0200
***************
*** 20,30 ****
--- 20,34 ----
  #include <limits.h>
  #include <math.h>
  
+ #include "access/heapam.h"
  #include "access/xact.h"
+ #include "catalog/pg_type.h"
+ #include "funcapi.h"
  #include "miscadmin.h"
  #include "utils/builtins.h"
  #include "utils/datetime.h"
  #include "utils/guc.h"
+ #include "utils/tzparser.h"
  
  
  static int DecodeNumber(int flen, char *field, bool haveTextMonth,
***************
*** 88,513 ****
   * which are 30 or 45 minutes away from an even hour, most are on an hour
   * boundary, and none on other boundaries.
   *
-  * Let's include all strings from my current zic time zone database.
-  * Not all of them are unique, or even very understandable, so we will
-  * leave some commented out for now.
   */
! static datetkn datetktbl[] = {
  /*	text, token, lexval */
  	{EARLY, RESERV, DTK_EARLY}, /* "-infinity" reserved for "early time" */
  	{"abstime", IGNORE_DTF, 0}, /* for pre-v6.1 "Invalid Abstime" */
- 	{"acsst", DTZ, POS(42)},	/* Cent. Australia */
- 	{"acst", DTZ, NEG(16)},		/* Atlantic/Porto Acre Summer Time */
- 	{"act", TZ, NEG(20)},		/* Atlantic/Porto Acre Time */
  	{DA_D, ADBC, AD},			/* "ad" for years > 0 */
- 	{"adt", DTZ, NEG(12)},		/* Atlantic Daylight Time */
- 	{"aesst", DTZ, POS(44)},	/* E. Australia */
- 	{"aest", TZ, POS(40)},		/* Australia Eastern Std Time */
- 	{"aft", TZ, POS(18)},		/* Kabul */
- 	{"ahst", TZ, NEG(40)},		/* Alaska-Hawaii Std Time */
- 	{"akdt", DTZ, NEG(32)},		/* Alaska Daylight Time */
- 	{"akst", DTZ, NEG(36)},		/* Alaska Standard Time */
  	{"allballs", RESERV, DTK_ZULU},		/* 00:00:00 */
- 	{"almst", TZ, POS(28)},		/* Almaty Savings Time */
- 	{"almt", TZ, POS(24)},		/* Almaty Time */
  	{"am", AMPM, AM},
- 	{"amst", DTZ, POS(20)},		/* Armenia Summer Time (Yerevan) */
- #if 0
- 	{"amst", DTZ, NEG(12)},		/* Amazon Summer Time (Porto Velho) */
- #endif
- 	{"amt", TZ, POS(16)},		/* Armenia Time (Yerevan) */
- #if 0
- 	{"amt", TZ, NEG(16)},		/* Amazon Time (Porto Velho) */
- #endif
- 	{"anast", DTZ, POS(52)},	/* Anadyr Summer Time (Russia) */
- 	{"anat", TZ, POS(48)},		/* Anadyr Time (Russia) */
  	{"apr", MONTH, 4},
  	{"april", MONTH, 4},
- #if 0
- 	aqtst
- 	aqtt
- 	arst
- #endif
- 	{"art", TZ, NEG(12)},		/* Argentina Time */
- #if 0
- 	ashst
- 	ast							/* Atlantic Standard Time, Arabia Standard
- 								 * Time, Acre Standard Time */
- #endif
- 	{"ast", TZ, NEG(16)},		/* Atlantic Std Time (Canada) */
  	{"at", IGNORE_DTF, 0},		/* "at" (throwaway) */
  	{"aug", MONTH, 8},
  	{"august", MONTH, 8},
- 	{"awsst", DTZ, POS(36)},	/* W. Australia */
- 	{"awst", TZ, POS(32)},		/* W. Australia */
- 	{"awt", DTZ, NEG(12)},
- 	{"azost", DTZ, POS(0)},		/* Azores Summer Time */
- 	{"azot", TZ, NEG(4)},		/* Azores Time */
- 	{"azst", DTZ, POS(20)},		/* Azerbaijan Summer Time */
- 	{"azt", TZ, POS(16)},		/* Azerbaijan Time */
  	{DB_C, ADBC, BC},			/* "bc" for years <= 0 */
- 	{"bdst", TZ, POS(8)},		/* British Double Summer Time */
- 	{"bdt", TZ, POS(24)},		/* Dacca */
- 	{"bnt", TZ, POS(32)},		/* Brunei Darussalam Time */
- 	{"bort", TZ, POS(32)},		/* Borneo Time (Indonesia) */
- #if 0
- 	bortst
- 	bost
- #endif
- 	{"bot", TZ, NEG(16)},		/* Bolivia Time */
- 	{"bra", TZ, NEG(12)},		/* Brazil Time */
- 	{"brst", DTZ, NEG(8)},		/* Brasilia Summer Time */
- 	{"brt", TZ, NEG(12)},		/* Brasilia Time */
- 	{"bst", DTZ, POS(4)},		/* British Summer Time */
- #if 0
- 	{"bst", TZ, NEG(12)},		/* Brazil Standard Time */
- 	{"bst", DTZ, NEG(44)},		/* Bering Summer Time */
- #endif
- 	{"bt", TZ, POS(12)},		/* Baghdad Time */
- 	{"btt", TZ, POS(24)},		/* Bhutan Time */
- 	{"cadt", DTZ, POS(42)},		/* Central Australian DST */
- 	{"cast", TZ, POS(38)},		/* Central Australian ST */
- 	{"cat", TZ, NEG(40)},		/* Central Alaska Time */
- 	{"cct", TZ, POS(32)},		/* China Coast Time */
- #if 0
- 	{"cct", TZ, POS(26)},		/* Indian Cocos (Island) Time */
- #endif
- 	{"cdt", DTZ, NEG(20)},		/* Central Daylight Time */
- 	{"cest", DTZ, POS(8)},		/* Central European Dayl.Time */
- 	{"cet", TZ, POS(4)},		/* Central European Time */
- 	{"cetdst", DTZ, POS(8)},	/* Central European Dayl.Time */
- 	{"chadt", DTZ, POS(55)},	/* Chatham Island Daylight Time (13:45) */
- 	{"chast", TZ, POS(51)},		/* Chatham Island Time (12:45) */
- #if 0
- 	ckhst
- #endif
- 	{"ckt", TZ, POS(48)},		/* Cook Islands Time */
- 	{"clst", DTZ, NEG(12)},		/* Chile Summer Time */
- 	{"clt", TZ, NEG(16)},		/* Chile Time */
- #if 0
- 	cost
- #endif
- 	{"cot", TZ, NEG(20)},		/* Columbia Time */
- 	{"cst", TZ, NEG(24)},		/* Central Standard Time */
  	{DCURRENT, RESERV, DTK_CURRENT},	/* "current" is always now */
- #if 0
- 	cvst
- #endif
- 	{"cvt", TZ, POS(28)},		/* Christmas Island Time (Indian Ocean) */
- 	{"cxt", TZ, POS(28)},		/* Christmas Island Time (Indian Ocean) */
  	{"d", UNITS, DTK_DAY},		/* "day of month" for ISO input */
- 	{"davt", TZ, POS(28)},		/* Davis Time (Antarctica) */
- 	{"ddut", TZ, POS(40)},		/* Dumont-d'Urville Time (Antarctica) */
  	{"dec", MONTH, 12},
  	{"december", MONTH, 12},
- 	{"dnt", TZ, POS(4)},		/* Dansk Normal Tid */
  	{"dow", RESERV, DTK_DOW},	/* day of week */
  	{"doy", RESERV, DTK_DOY},	/* day of year */
  	{"dst", DTZMOD, 6},
- #if 0
- 	{"dusst", DTZ, POS(24)},	/* Dushanbe Summer Time */
- #endif
- 	{"easst", DTZ, NEG(20)},	/* Easter Island Summer Time */
- 	{"east", TZ, NEG(24)},		/* Easter Island Time */
- 	{"eat", TZ, POS(12)},		/* East Africa Time */
- #if 0
- 	{"east", DTZ, POS(16)},		/* Indian Antananarivo Savings Time */
- 	{"eat", TZ, POS(12)},		/* Indian Antananarivo Time */
- 	{"ect", TZ, NEG(16)},		/* Eastern Caribbean Time */
- 	{"ect", TZ, NEG(20)},		/* Ecuador Time */
- #endif
- 	{"edt", DTZ, NEG(16)},		/* Eastern Daylight Time */
- 	{"eest", DTZ, POS(12)},		/* Eastern Europe Summer Time */
- 	{"eet", TZ, POS(8)},		/* East. Europe, USSR Zone 1 */
- 	{"eetdst", DTZ, POS(12)},	/* Eastern Europe Daylight Time */
- 	{"egst", DTZ, POS(0)},		/* East Greenland Summer Time */
- 	{"egt", TZ, NEG(4)},		/* East Greenland Time */
- #if 0
- 	ehdt
- #endif
  	{EPOCH, RESERV, DTK_EPOCH}, /* "epoch" reserved for system epoch time */
- 	{"est", TZ, NEG(20)},		/* Eastern Standard Time */
  	{"feb", MONTH, 2},
  	{"february", MONTH, 2},
- 	{"fjst", DTZ, NEG(52)},		/* Fiji Summer Time (13 hour offset!) */
- 	{"fjt", TZ, NEG(48)},		/* Fiji Time */
- 	{"fkst", DTZ, NEG(12)},		/* Falkland Islands Summer Time */
- 	{"fkt", TZ, NEG(8)},		/* Falkland Islands Time */
- 	{"fnst", DTZ, NEG(4)},		/* Fernando de Noronha Summer Time */
- 	{"fnt", TZ, NEG(8)},		/* Fernando de Noronha Time */
  	{"fri", DOW, 5},
  	{"friday", DOW, 5},
- 	{"fst", TZ, POS(4)},		/* French Summer Time */
- 	{"fwt", DTZ, POS(8)},		/* French Winter Time  */
- 	{"galt", TZ, NEG(24)},		/* Galapagos Time */
- 	{"gamt", TZ, NEG(36)},		/* Gambier Time */
- 	{"gest", DTZ, POS(20)},		/* Georgia Summer Time */
- 	{"get", TZ, POS(16)},		/* Georgia Time */
- 	{"gft", TZ, NEG(12)},		/* French Guiana Time */
- #if 0
- 	ghst
- #endif
- 	{"gilt", TZ, POS(48)},		/* Gilbert Islands Time */
- 	{"gmt", TZ, POS(0)},		/* Greenwich Mean Time */
- 	{"gst", TZ, POS(40)},		/* Guam Std Time, USSR Zone 9 */
- 	{"gyt", TZ, NEG(16)},		/* Guyana Time */
  	{"h", UNITS, DTK_HOUR},		/* "hour" */
- #if 0
- 	hadt
- 	hast
- #endif
- 	{"hdt", DTZ, NEG(36)},		/* Hawaii/Alaska Daylight Time */
- #if 0
- 	hkst
- #endif
- 	{"hkt", TZ, POS(32)},		/* Hong Kong Time */
- #if 0
- 	{"hmt", TZ, POS(12)},		/* Hellas ? ? */
- 	hovst
- 	hovt
- #endif
- 	{"hst", TZ, NEG(40)},		/* Hawaii Std Time */
- #if 0
- 	hwt
- #endif
- 	{"ict", TZ, POS(28)},		/* Indochina Time */
- 	{"idle", TZ, POS(48)},		/* Intl. Date Line, East */
- 	{"idlw", TZ, NEG(48)},		/* Intl. Date Line, West */
- #if 0
- 	idt							/* Israeli, Iran, Indian Daylight Time */
- #endif
  	{LATE, RESERV, DTK_LATE},	/* "infinity" reserved for "late time" */
  	{INVALID, RESERV, DTK_INVALID},		/* "invalid" reserved for bad time */
- 	{"iot", TZ, POS(20)},		/* Indian Chagos Time */
- 	{"irkst", DTZ, POS(36)},	/* Irkutsk Summer Time */
- 	{"irkt", TZ, POS(32)},		/* Irkutsk Time */
- 	{"irt", TZ, POS(14)},		/* Iran Time */
- #if 0
- 	isst
- #endif
- 	{"ist", TZ, POS(8)},		/* Israel */
- 	{"it", TZ, POS(14)},		/* Iran Time */
  	{"j", UNITS, DTK_JULIAN},
  	{"jan", MONTH, 1},
  	{"january", MONTH, 1},
- 	{"javt", TZ, POS(28)},		/* Java Time (07:00? see JT) */
- 	{"jayt", TZ, POS(36)},		/* Jayapura Time (Indonesia) */
  	{"jd", UNITS, DTK_JULIAN},
- 	{"jst", TZ, POS(36)},		/* Japan Std Time,USSR Zone 8 */
- 	{"jt", TZ, POS(30)},		/* Java Time (07:30? see JAVT) */
  	{"jul", MONTH, 7},
  	{"julian", UNITS, DTK_JULIAN},
  	{"july", MONTH, 7},
  	{"jun", MONTH, 6},
  	{"june", MONTH, 6},
- 	{"kdt", DTZ, POS(40)},		/* Korea Daylight Time */
- 	{"kgst", DTZ, POS(24)},		/* Kyrgyzstan Summer Time */
- 	{"kgt", TZ, POS(20)},		/* Kyrgyzstan Time */
- 	{"kost", TZ, POS(48)},		/* Kosrae Time */
- 	{"krast", DTZ, POS(28)},	/* Krasnoyarsk Summer Time */
- 	{"krat", TZ, POS(32)},		/* Krasnoyarsk Standard Time */
- 	{"kst", TZ, POS(36)},		/* Korea Standard Time */
- 	{"lhdt", DTZ, POS(44)},		/* Lord Howe Daylight Time, Australia */
- 	{"lhst", TZ, POS(42)},		/* Lord Howe Standard Time, Australia */
- 	{"ligt", TZ, POS(40)},		/* From Melbourne, Australia */
- 	{"lint", TZ, POS(56)},		/* Line Islands Time (Kiribati; +14 hours!) */
- 	{"lkt", TZ, POS(24)},		/* Lanka Time */
  	{"m", UNITS, DTK_MONTH},	/* "month" for ISO input */
- 	{"magst", DTZ, POS(48)},	/* Magadan Summer Time */
- 	{"magt", TZ, POS(44)},		/* Magadan Time */
  	{"mar", MONTH, 3},
  	{"march", MONTH, 3},
- 	{"mart", TZ, NEG(38)},		/* Marquesas Time */
- 	{"mawt", TZ, POS(24)},		/* Mawson, Antarctica */
  	{"may", MONTH, 5},
- 	{"mdt", DTZ, NEG(24)},		/* Mountain Daylight Time */
- 	{"mest", DTZ, POS(8)},		/* Middle Europe Summer Time */
- 	{"met", TZ, POS(4)},		/* Middle Europe Time */
- 	{"metdst", DTZ, POS(8)},	/* Middle Europe Daylight Time */
- 	{"mewt", TZ, POS(4)},		/* Middle Europe Winter Time */
- 	{"mez", TZ, POS(4)},		/* Middle Europe Zone */
- 	{"mht", TZ, POS(48)},		/* Kwajalein */
  	{"mm", UNITS, DTK_MINUTE},	/* "minute" for ISO input */
- 	{"mmt", TZ, POS(26)},		/* Myanmar Time */
  	{"mon", DOW, 1},
  	{"monday", DOW, 1},
- #if 0
- 	most
- #endif
- 	{"mpt", TZ, POS(40)},		/* North Mariana Islands Time */
- 	{"msd", DTZ, POS(16)},		/* Moscow Summer Time */
- 	{"msk", TZ, POS(12)},		/* Moscow Time */
- 	{"mst", TZ, NEG(28)},		/* Mountain Standard Time */
- 	{"mt", TZ, POS(34)},		/* Moluccas Time */
- 	{"mut", TZ, POS(16)},		/* Mauritius Island Time */
- 	{"mvt", TZ, POS(20)},		/* Maldives Island Time */
- 	{"myt", TZ, POS(32)},		/* Malaysia Time */
- #if 0
- 	ncst
- #endif
- 	{"nct", TZ, POS(44)},		/* New Caledonia Time */
- 	{"ndt", DTZ, NEG(10)},		/* Nfld. Daylight Time */
- 	{"nft", TZ, NEG(14)},		/* Newfoundland Standard Time */
- 	{"nor", TZ, POS(4)},		/* Norway Standard Time */
  	{"nov", MONTH, 11},
  	{"november", MONTH, 11},
- 	{"novst", DTZ, POS(28)},	/* Novosibirsk Summer Time */
- 	{"novt", TZ, POS(24)},		/* Novosibirsk Standard Time */
  	{NOW, RESERV, DTK_NOW},		/* current transaction time */
- 	{"npt", TZ, POS(23)},		/* Nepal Standard Time (GMT-5:45) */
- 	{"nst", TZ, NEG(14)},		/* Nfld. Standard Time */
- 	{"nt", TZ, NEG(44)},		/* Nome Time */
- 	{"nut", TZ, NEG(44)},		/* Niue Time */
- 	{"nzdt", DTZ, POS(52)},		/* New Zealand Daylight Time */
- 	{"nzst", TZ, POS(48)},		/* New Zealand Standard Time */
- 	{"nzt", TZ, POS(48)},		/* New Zealand Time */
  	{"oct", MONTH, 10},
  	{"october", MONTH, 10},
- 	{"omsst", DTZ, POS(28)},	/* Omsk Summer Time */
- 	{"omst", TZ, POS(24)},		/* Omsk Time */
  	{"on", IGNORE_DTF, 0},		/* "on" (throwaway) */
- 	{"pdt", DTZ, NEG(28)},		/* Pacific Daylight Time */
- #if 0
- 	pest
- #endif
- 	{"pet", TZ, NEG(20)},		/* Peru Time */
- 	{"petst", DTZ, POS(52)},	/* Petropavlovsk-Kamchatski Summer Time */
- 	{"pett", TZ, POS(48)},		/* Petropavlovsk-Kamchatski Time */
- 	{"pgt", TZ, POS(40)},		/* Papua New Guinea Time */
- 	{"phot", TZ, POS(52)},		/* Phoenix Islands (Kiribati) Time */
- #if 0
- 	phst
- #endif
- 	{"pht", TZ, POS(32)},		/* Phillipine Time */
- 	{"pkt", TZ, POS(20)},		/* Pakistan Time */
  	{"pm", AMPM, PM},
- 	{"pmdt", DTZ, NEG(8)},		/* Pierre & Miquelon Daylight Time */
- #if 0
- 	pmst
- #endif
- 	{"pont", TZ, POS(44)},		/* Ponape Time (Micronesia) */
- 	{"pst", TZ, NEG(32)},		/* Pacific Standard Time */
- 	{"pwt", TZ, POS(36)},		/* Palau Time */
- 	{"pyst", DTZ, NEG(12)},		/* Paraguay Summer Time */
- 	{"pyt", TZ, NEG(16)},		/* Paraguay Time */
- 	{"ret", DTZ, POS(16)},		/* Reunion Island Time */
  	{"s", UNITS, DTK_SECOND},	/* "seconds" for ISO input */
- 	{"sadt", DTZ, POS(42)},		/* S. Australian Dayl. Time */
- #if 0
- 	samst
- 	samt
- #endif
- 	{"sast", TZ, POS(38)},		/* South Australian Std Time */
  	{"sat", DOW, 6},
  	{"saturday", DOW, 6},
- #if 0
- 	sbt
- #endif
- 	{"sct", DTZ, POS(16)},		/* Mahe Island Time */
  	{"sep", MONTH, 9},
  	{"sept", MONTH, 9},
  	{"september", MONTH, 9},
- 	{"set", TZ, NEG(4)},		/* Seychelles Time ?? */
- #if 0
- 	sgt
- #endif
- 	{"sst", DTZ, POS(8)},		/* Swedish Summer Time */
  	{"sun", DOW, 0},
  	{"sunday", DOW, 0},
- 	{"swt", TZ, POS(4)},		/* Swedish Winter Time */
- #if 0
- 	syot
- #endif
  	{"t", ISOTIME, DTK_TIME},	/* Filler for ISO time fields */
- 	{"tft", TZ, POS(20)},		/* Kerguelen Time */
- 	{"that", TZ, NEG(40)},		/* Tahiti Time */
  	{"thu", DOW, 4},
  	{"thur", DOW, 4},
  	{"thurs", DOW, 4},
  	{"thursday", DOW, 4},
- 	{"tjt", TZ, POS(20)},		/* Tajikistan Time */
- 	{"tkt", TZ, NEG(40)},		/* Tokelau Time */
- 	{"tmt", TZ, POS(20)},		/* Turkmenistan Time */
  	{TODAY, RESERV, DTK_TODAY}, /* midnight */
  	{TOMORROW, RESERV, DTK_TOMORROW},	/* tomorrow midnight */
- #if 0
- 	tost
- #endif
- 	{"tot", TZ, POS(52)},		/* Tonga Time */
- #if 0
- 	tpt
- #endif
- 	{"truk", TZ, POS(40)},		/* Truk Time */
  	{"tue", DOW, 2},
  	{"tues", DOW, 2},
  	{"tuesday", DOW, 2},
- 	{"tvt", TZ, POS(48)},		/* Tuvalu Time */
- #if 0
- 	uct
- #endif
- 	{"ulast", DTZ, POS(36)},	/* Ulan Bator Summer Time */
- 	{"ulat", TZ, POS(32)},		/* Ulan Bator Time */
  	{"undefined", RESERV, DTK_INVALID}, /* pre-v6.1 invalid time */
- 	{"ut", TZ, POS(0)},
- 	{"utc", TZ, POS(0)},
- 	{"uyst", DTZ, NEG(8)},		/* Uruguay Summer Time */
- 	{"uyt", TZ, NEG(12)},		/* Uruguay Time */
- 	{"uzst", DTZ, POS(24)},		/* Uzbekistan Summer Time */
- 	{"uzt", TZ, POS(20)},		/* Uzbekistan Time */
- 	{"vet", TZ, NEG(16)},		/* Venezuela Time */
- 	{"vlast", DTZ, POS(44)},	/* Vladivostok Summer Time */
- 	{"vlat", TZ, POS(40)},		/* Vladivostok Time */
- #if 0
- 	vust
- #endif
- 	{"vut", TZ, POS(44)},		/* Vanuata Time */
- 	{"wadt", DTZ, POS(32)},		/* West Australian DST */
- 	{"wakt", TZ, POS(48)},		/* Wake Time */
- #if 0
- 	warst
- #endif
- 	{"wast", TZ, POS(28)},		/* West Australian Std Time */
- 	{"wat", TZ, NEG(4)},		/* West Africa Time */
- 	{"wdt", DTZ, POS(36)},		/* West Australian DST */
  	{"wed", DOW, 3},
  	{"wednesday", DOW, 3},
  	{"weds", DOW, 3},
- 	{"west", DTZ, POS(4)},		/* Western Europe Summer Time */
- 	{"wet", TZ, POS(0)},		/* Western Europe */
- 	{"wetdst", DTZ, POS(4)},	/* Western Europe Daylight Savings Time */
- 	{"wft", TZ, POS(48)},		/* Wallis and Futuna Time */
- 	{"wgst", DTZ, NEG(8)},		/* West Greenland Summer Time */
- 	{"wgt", TZ, NEG(12)},		/* West Greenland Time */
- 	{"wst", TZ, POS(32)},		/* West Australian Standard Time */
  	{"y", UNITS, DTK_YEAR},		/* "year" for ISO input */
- 	{"yakst", DTZ, POS(40)},	/* Yakutsk Summer Time */
- 	{"yakt", TZ, POS(36)},		/* Yakutsk Time */
- 	{"yapt", TZ, POS(40)},		/* Yap Time (Micronesia) */
- 	{"ydt", DTZ, NEG(32)},		/* Yukon Daylight Time */
- 	{"yekst", DTZ, POS(24)},	/* Yekaterinburg Summer Time */
- 	{"yekt", TZ, POS(20)},		/* Yekaterinburg Time */
  	{YESTERDAY, RESERV, DTK_YESTERDAY}, /* yesterday midnight */
- 	{"yst", TZ, NEG(36)},		/* Yukon Standard Time */
- 	{"z", TZ, POS(0)},			/* time zone tag per ISO-8601 */
- 	{"zp4", TZ, NEG(16)},		/* UTC +4  hours. */
- 	{"zp5", TZ, NEG(20)},		/* UTC +5  hours. */
- 	{"zp6", TZ, NEG(24)},		/* UTC +6  hours. */
- 	{ZULU, TZ, POS(0)},			/* UTC */
- };
- 
- static unsigned int szdatetktbl = sizeof datetktbl / sizeof datetktbl[0];
- 
- /* Used for SET australian_timezones to override North American ones */
- static datetkn australian_datetktbl[] = {
- 	{"acst", TZ, POS(38)},		/* Cent. Australia */
- 	{"cst", TZ, POS(42)},		/* Australia Central Std Time */
- 	{"east", TZ, POS(40)},		/* East Australian Std Time */
- 	{"est", TZ, POS(40)},		/* Australia Eastern Std Time */
- 	{"sat", TZ, POS(38)},
  };
  
! static unsigned int australian_szdatetktbl = sizeof australian_datetktbl /
! sizeof australian_datetktbl[0];
  
  static datetkn deltatktbl[] = {
  	/* text, token, lexval */
--- 92,177 ----
   * which are 30 or 45 minutes away from an even hour, most are on an hour
   * boundary, and none on other boundaries.
   *
   */
! static datetkn *datetktbl = NULL;
! static datetkn datetktbl_without_timezones[] = {
  /*	text, token, lexval */
  	{EARLY, RESERV, DTK_EARLY}, /* "-infinity" reserved for "early time" */
  	{"abstime", IGNORE_DTF, 0}, /* for pre-v6.1 "Invalid Abstime" */
  	{DA_D, ADBC, AD},			/* "ad" for years > 0 */
  	{"allballs", RESERV, DTK_ZULU},		/* 00:00:00 */
  	{"am", AMPM, AM},
  	{"apr", MONTH, 4},
  	{"april", MONTH, 4},
  	{"at", IGNORE_DTF, 0},		/* "at" (throwaway) */
  	{"aug", MONTH, 8},
  	{"august", MONTH, 8},
  	{DB_C, ADBC, BC},			/* "bc" for years <= 0 */
  	{DCURRENT, RESERV, DTK_CURRENT},	/* "current" is always now */
  	{"d", UNITS, DTK_DAY},		/* "day of month" for ISO input */
  	{"dec", MONTH, 12},
  	{"december", MONTH, 12},
  	{"dow", RESERV, DTK_DOW},	/* day of week */
  	{"doy", RESERV, DTK_DOY},	/* day of year */
  	{"dst", DTZMOD, 6},
  	{EPOCH, RESERV, DTK_EPOCH}, /* "epoch" reserved for system epoch time */
  	{"feb", MONTH, 2},
  	{"february", MONTH, 2},
  	{"fri", DOW, 5},
  	{"friday", DOW, 5},
  	{"h", UNITS, DTK_HOUR},		/* "hour" */
  	{LATE, RESERV, DTK_LATE},	/* "infinity" reserved for "late time" */
  	{INVALID, RESERV, DTK_INVALID},		/* "invalid" reserved for bad time */
  	{"j", UNITS, DTK_JULIAN},
  	{"jan", MONTH, 1},
  	{"january", MONTH, 1},
  	{"jd", UNITS, DTK_JULIAN},
  	{"jul", MONTH, 7},
  	{"julian", UNITS, DTK_JULIAN},
  	{"july", MONTH, 7},
  	{"jun", MONTH, 6},
  	{"june", MONTH, 6},
  	{"m", UNITS, DTK_MONTH},	/* "month" for ISO input */
  	{"mar", MONTH, 3},
  	{"march", MONTH, 3},
  	{"may", MONTH, 5},
  	{"mm", UNITS, DTK_MINUTE},	/* "minute" for ISO input */
  	{"mon", DOW, 1},
  	{"monday", DOW, 1},
  	{"nov", MONTH, 11},
  	{"november", MONTH, 11},
  	{NOW, RESERV, DTK_NOW},		/* current transaction time */
  	{"oct", MONTH, 10},
  	{"october", MONTH, 10},
  	{"on", IGNORE_DTF, 0},		/* "on" (throwaway) */
  	{"pm", AMPM, PM},
  	{"s", UNITS, DTK_SECOND},	/* "seconds" for ISO input */
  	{"sat", DOW, 6},
  	{"saturday", DOW, 6},
  	{"sep", MONTH, 9},
  	{"sept", MONTH, 9},
  	{"september", MONTH, 9},
  	{"sun", DOW, 0},
  	{"sunday", DOW, 0},
  	{"t", ISOTIME, DTK_TIME},	/* Filler for ISO time fields */
  	{"thu", DOW, 4},
  	{"thur", DOW, 4},
  	{"thurs", DOW, 4},
  	{"thursday", DOW, 4},
  	{TODAY, RESERV, DTK_TODAY}, /* midnight */
  	{TOMORROW, RESERV, DTK_TOMORROW},	/* tomorrow midnight */
  	{"tue", DOW, 2},
  	{"tues", DOW, 2},
  	{"tuesday", DOW, 2},
  	{"undefined", RESERV, DTK_INVALID}, /* pre-v6.1 invalid time */
  	{"wed", DOW, 3},
  	{"wednesday", DOW, 3},
  	{"weds", DOW, 3},
  	{"y", UNITS, DTK_YEAR},		/* "year" for ISO input */
  	{YESTERDAY, RESERV, DTK_YESTERDAY}, /* yesterday midnight */
  };
  
! static unsigned int szdatetktbl;
  
  static datetkn deltatktbl[] = {
  	/* text, token, lexval */
***************
*** 583,588 ****
--- 247,410 ----
  
  static datetkn *deltacache[MAXDATEFIELDS] = {NULL};
  
+ /*
+  * This function gets called at server startup and builds up the final list of
+  * datetime tokens. It gets a pointer to a linked list of type struct tzEntry
+  * containing timezone information. Those get merged with statically defined
+  * datetktbl_without_timezones[] (both lists are sorted).
+  *
+  * Every "struct tzEntry" will be freed while walking through the list. The
+  * "abbrev" member is also allocated on the heap but the pointer will be
+  * transferred directly into the new list.
+  *
+  * The function gets called from the TimeZoneMemoryContext (see tzparser.c).
+  */
+ 
+ int
+ InitTimeZones(tzList tze)
+ {
+ 	int		iterNoTz, iterNoTzMax, iterNew;
+ 	int		nTzEntries;
+ 	int		i;
+ 	tzList	p;
+ 
+ 	/* check how many entries we actually have */
+ 	p = tze;
+ 	nTzEntries = 0;
+ 	while (p)
+ 	{
+ 		nTzEntries++;
+ 		p = p->next;
+ 	}
+ 
+ 	iterNoTz = iterNew = 0;
+ 	iterNoTzMax = (sizeof(datetktbl_without_timezones) / sizeof(datetkn));
+ 	szdatetktbl = iterNoTzMax + nTzEntries;
+ 	datetktbl = (datetkn*) palloc(sizeof(datetkn) * szdatetktbl);
+ 
+ 	for(i = 0; i < szdatetktbl; i++)
+ 	{
+ 		/*
+ 		 * Basically this is a simple merge of two sorted lists into one.
+ 		 *
+ 		 * !tze: No more entries in timezone list
+ 		 * iterNoTz == iterNoTzMax: No more entries in non-timezone array
+ 		 *
+ 		 * If there are entries left in both lists, use strncmp() to see which
+ 		 * item goes first alphabetically.
+ 		 */
+ 		if ((!tze || strncmp(tze->abbrev,
+ 							 datetktbl_without_timezones[iterNoTz].token,
+ 							 TOKMAXLEN) > 0) && iterNoTz < iterNoTzMax)
+ 			datetktbl[iterNew++] = datetktbl_without_timezones[iterNoTz++];
+ 		else
+ 		{
+ 			strncpy(datetktbl[iterNew].token, tze->abbrev, TOKMAXLEN);
+ 			datetktbl[iterNew].type = tze->is_dst ? DTZ : TZ;
+ 			TOVAL(&datetktbl[iterNew], tze->offset / 60);
+ 			tze = tze->next;
+ 			iterNew++;
+ 		}
+ 	}
+ 
+ 	/* clear date cache */
+ 	for (i = 0; i < MAXDATEFIELDS; i++)
+ 		datecache[i] = NULL;
+ 
+ 	return 0;
+ }
+ 
+ /*
+  * This set returning function reads all the available time zone abbreviations
+  * and returns a set of (name, gmt_offset, is_dst).
+  */
+ 
+ Datum
+ pg_timezonename(PG_FUNCTION_ARGS)
+ {
+ 	FuncCallContext	   *funcctx;
+ 	int				   *pindex;
+ 	Datum				result;
+ 	Interval		   *resInterval;
+ 	HeapTuple			tuple;
+ 	Datum				values[3];
+ 	bool				nulls[3];
+ 	char				buffer[TOKMAXLEN + 1];
+ 	struct pg_tm		tm;
+ 
+ 	/* stuff done only on the first call of the function */
+ 	if (SRF_IS_FIRSTCALL())
+ 	{
+ 		TupleDesc		tupdesc;
+ 		MemoryContext	oldcontext;
+ 
+ 		/* create a function context for cross-call persistence */
+ 		funcctx = SRF_FIRSTCALL_INIT();
+ 
+ 		/*
+ 		 * switch to memory context appropriate for multiple function
+ 		 * calls
+ 		 */
+ 		oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
+ 
+ 		/* allocate memory for user context */
+ 		pindex = (int *) palloc(sizeof(int));
+ 		*pindex = 0;
+ 		funcctx->user_fctx = (void *) pindex;
+ 
+ 		/*
+ 		 * build tupdesc for result tuples. This must match the
+ 		 * definition of the pg_timezonenames view in
+ 		 * system_views.sql
+ 		 */
+ 		tupdesc = CreateTemplateTupleDesc(3, false);
+ 		TupleDescInitEntry(tupdesc, (AttrNumber) 1, "name",
+ 						   TEXTOID, -1, 0);
+ 		TupleDescInitEntry(tupdesc, (AttrNumber) 2, "gmt_offset",
+ 						   INTERVALOID, -1, 0);
+ 		TupleDescInitEntry(tupdesc, (AttrNumber) 3, "is_dst",
+ 						   BOOLOID, -1, 0);
+ 
+ 		funcctx->tuple_desc = BlessTupleDesc(tupdesc);
+ 		MemoryContextSwitchTo(oldcontext);
+ 	}
+ 
+ 	/* stuff done on every call of the function */
+ 	funcctx = SRF_PERCALL_SETUP();
+ 	pindex = (int *) funcctx->user_fctx;
+ 
+ 	while (*pindex < szdatetktbl && datetktbl[*pindex].type != TZ
+ 								 && datetktbl[*pindex].type != DTZ)
+ 		(*pindex)++;
+ 
+ 	if (*pindex == szdatetktbl)
+ 		SRF_RETURN_DONE(funcctx);
+ 
+ 	MemSet(nulls, 0, sizeof(nulls));
+ 	MemSet(&tm, 0, sizeof(struct pg_tm));
+ 
+ 	/*
+ 	 * Note that the token is not necessarily null-terminated
+ 	 */
+ 	strncpy(buffer, datetktbl[*pindex].token, TOKMAXLEN);
+ 	buffer[TOKMAXLEN] = '\0';
+ 	values[0] = DirectFunctionCall1(textin, CStringGetDatum(buffer));
+ 
+ 	tm.tm_min = (-1) * FROMVAL(&datetktbl[*pindex]);
+ 	resInterval = (Interval *) palloc(sizeof(Interval));
+ 	tm2interval(&tm, 0, resInterval);
+ 	values[1] = IntervalPGetDatum(resInterval);
+ 
+ 	Assert(datetktbl[*pindex].type == DTZ ||
+ 		   datetktbl[*pindex].type == TZ);
+ 	values[2] = BoolGetDatum(datetktbl[*pindex].type == DTZ);
+ 
+ 	(*pindex)++;
+ 
+ 	tuple = heap_form_tuple(funcctx->tuple_desc, values, nulls);
+ 	result = HeapTupleGetDatum(tuple);
+ 	SRF_RETURN_NEXT(funcctx, result);
+ }
  
  /*
   * Calendar time to Julian date conversions.
***************
*** 3005,3018 ****
  		strncmp(lowtoken, datecache[field]->token, TOKMAXLEN) == 0)
  		tp = datecache[field];
  	else
! 	{
! 		tp = NULL;
! 		if (Australian_timezones)
! 			tp = datebsearch(lowtoken, australian_datetktbl,
! 							 australian_szdatetktbl);
! 		if (!tp)
! 			tp = datebsearch(lowtoken, datetktbl, szdatetktbl);
! 	}
  	datecache[field] = tp;
  	if (tp == NULL)
  	{
--- 2827,2833 ----
  		strncmp(lowtoken, datecache[field]->token, TOKMAXLEN) == 0)
  		tp = datecache[field];
  	else
! 		tp = datebsearch(lowtoken, datetktbl, szdatetktbl);
  	datecache[field] = tp;
  	if (tp == NULL)
  	{
***************
*** 4083,4103 ****
  }	/* EncodeInterval() */
  
  
- /* GUC assign_hook for australian_timezones */
- bool
- ClearDateCache(bool newval, bool doit, GucSource source)
- {
- 	int			i;
- 
- 	if (doit)
- 	{
- 		for (i = 0; i < MAXDATEFIELDS; i++)
- 			datecache[i] = NULL;
- 	}
- 
- 	return true;
- }
- 
  /*
   * We've been burnt by stupid errors in the ordering of the datetkn tables
   * once too often.	Arrange to check them during postmaster start.
--- 3898,3903 ----
***************
*** 4132,4139 ****
  
  	ok &= CheckDateTokenTable("datetktbl", datetktbl, szdatetktbl);
  	ok &= CheckDateTokenTable("deltatktbl", deltatktbl, szdeltatktbl);
- 	ok &= CheckDateTokenTable("australian_datetktbl",
- 							  australian_datetktbl,
- 							  australian_szdatetktbl);
  	return ok;
  }
--- 3932,3936 ----
diff -cNr cvs/pgsql/src/backend/utils/misc/guc.c cvs.build/pgsql/src/backend/utils/misc/guc.c
*** cvs/pgsql/src/backend/utils/misc/guc.c	2006-07-10 18:53:26.000000000 +0200
--- cvs.build/pgsql/src/backend/utils/misc/guc.c	2006-07-13 18:06:01.000000000 +0200
***************
*** 172,179 ****
  
  bool		SQL_inheritance = true;
  
- bool		Australian_timezones = false;
- 
  bool		Password_encryption = true;
  
  bool		default_with_oids = false;
--- 172,177 ----
***************
*** 189,194 ****
--- 187,193 ----
  char	   *HbaFileName;
  char	   *IdentFileName;
  char	   *external_pid_file;
+ char	   *timezone_abbreviations;
  
  int			tcp_keepalives_idle;
  int			tcp_keepalives_interval;
***************
*** 816,830 ****
  		true, NULL, NULL
  	},
  	{
- 		{"australian_timezones", PGC_USERSET, CLIENT_CONN_LOCALE,
- 			gettext_noop("Interprets ACST, CST, EST, and SAT as Australian time zones."),
- 			gettext_noop("Otherwise they are interpreted as North/South American "
- 						 "time zones and Saturday.")
- 		},
- 		&Australian_timezones,
- 		false, ClearDateCache, NULL
- 	},
- 	{
  		{"password_encryption", PGC_USERSET, CONN_AUTH_SECURITY,
  			gettext_noop("Encrypt passwords."),
  			gettext_noop("When a password is specified in CREATE USER or "
--- 815,820 ----
***************
*** 2086,2091 ****
--- 2076,2089 ----
  		&timezone_string,
  		"UNKNOWN", assign_timezone, show_timezone
  	},
+ 	{
+ 		{"timezone_abbreviations", PGC_SIGHUP, CLIENT_CONN_LOCALE,
+ 			gettext_noop("Selects a file of timezone abbreviations"),
+ 			NULL,
+ 		},
+ 		&timezone_abbreviations,
+ 		"Default", NULL, NULL
+ 	},
  
  	{
  		{"transaction_isolation", PGC_USERSET, CLIENT_CONN_STATEMENT,
diff -cNr cvs/pgsql/src/backend/utils/misc/Makefile cvs.build/pgsql/src/backend/utils/misc/Makefile
*** cvs/pgsql/src/backend/utils/misc/Makefile	2006-03-24 08:10:37.000000000 +0100
--- cvs.build/pgsql/src/backend/utils/misc/Makefile	2006-07-13 18:06:01.000000000 +0200
***************
*** 14,20 ****
  
  override CPPFLAGS := -I$(srcdir) $(CPPFLAGS)
  
! OBJS = guc.o help_config.o pg_rusage.o ps_status.o superuser.o
  
  # This location might depend on the installation directories. Therefore
  # we can't subsitute it into pg_config.h.
--- 14,20 ----
  
  override CPPFLAGS := -I$(srcdir) $(CPPFLAGS)
  
! OBJS = guc.o help_config.o pg_rusage.o ps_status.o superuser.o tzparser.o
  
  # This location might depend on the installation directories. Therefore
  # we can't subsitute it into pg_config.h.
diff -cNr cvs/pgsql/src/backend/utils/misc/postgresql.conf.sample cvs.build/pgsql/src/backend/utils/misc/postgresql.conf.sample
*** cvs/pgsql/src/backend/utils/misc/postgresql.conf.sample	2006-07-10 18:53:26.000000000 +0200
--- cvs.build/pgsql/src/backend/utils/misc/postgresql.conf.sample	2006-07-13 18:06:01.000000000 +0200
***************
*** 380,386 ****
  #datestyle = 'iso, mdy'
  #timezone = unknown			# actually, defaults to TZ 
  					# environment setting
! #australian_timezones = off
  #extra_float_digits = 0			# min -15, max 2
  #client_encoding = sql_ascii		# actually, defaults to database
  					# encoding
--- 380,392 ----
  #datestyle = 'iso, mdy'
  #timezone = unknown			# actually, defaults to TZ 
  					# environment setting
! #timezone_abbreviations = 'Default'     # select the set of preferred timezone
! 					# abbreviations. Currently, there are
! 					#   Default
! 					#   Australia
! 					#   India
! 					# However you can also create your own
! 					# file in shared/timezone/sets/.
  #extra_float_digits = 0			# min -15, max 2
  #client_encoding = sql_ascii		# actually, defaults to database
  					# encoding
diff -cNr cvs/pgsql/src/backend/utils/misc/tzparser.c cvs.build/pgsql/src/backend/utils/misc/tzparser.c
*** cvs/pgsql/src/backend/utils/misc/tzparser.c	1970-01-01 01:00:00.000000000 +0100
--- cvs.build/pgsql/src/backend/utils/misc/tzparser.c	2006-07-13 18:06:01.000000000 +0200
***************
*** 0 ****
--- 1,409 ----
+ /*-------------------------------------------------------------------------
+  *
+  * tzparser.c
+  *	  Functions for parsing the timezone offset files
+  *
+  * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
+  * Portions Copyright (c) 1994, Regents of the University of California
+  *
+  *
+  * IDENTIFICATION
+  *
+  *-------------------------------------------------------------------------
+  */
+ 
+ #include "postgres.h"
+ 
+ #include "miscadmin.h"
+ #include "storage/fd.h"
+ #include "utils/guc.h"
+ #include "utils/memutils.h"
+ #include "utils/datetime.h"
+ #include "utils/tzparser.h"
+ 
+ static void setErrorStr(char *fmt, ...);
+ 
+ static char *tzGetLine(const char *filename, int lineno, FILE *f);
+ static int splitTzLine(const char *filename, int lineno,
+ 					   char *line, tzEntry *tzentry);
+ static int transformTzEntry(tzList tzentry);
+ static tzList addToList(tzList base, tzEntry *entry, bool override);
+ 
+ static tzList tzFileParse(FILE *f, char *filename, int depth, tzList base);
+ static tzList ParseTzFile(const char *tzSetFile, int depth, tzList base);
+ 
+ static char *errorStr;
+ static MemoryContext TimeZoneMemoryContext;
+ #define TZBUFSIZE 200
+ 
+ static void
+ setErrorStr(char *fmt, ...)
+ {
+ 	size_t		size;
+ 	va_list		args;
+ 
+ 	/*
+ 	 * Maximal length here is the "Line too long" message from tzGetLine(). In
+ 	 * this case, TZBUFSIZE is used up by the whole buffer already, and the
+ 	 * filename and the line number have to fit in the 200 extra bytes.
+ 	 */
+ 	size = strlen(fmt) + TZBUFSIZE + 200;
+ 	errorStr = (char *) palloc(size);
+ 	va_start(args,fmt);
+ 	vsnprintf(errorStr, size, fmt, args);
+ 	va_end(args);
+ }
+ 
+ static int
+ transformTzEntry(tzList tzentry)
+ {
+ 	char *p;
+ 	if (tzentry->offset % 900 != 0)
+ 	{
+ 		setErrorStr("Time zone offsets must be multiples of 900s (15 min) "
+ 					"in file %s, line %d: %d",
+ 					tzentry->filename, tzentry->lineno, tzentry->offset);
+ 		return -1;
+ 	}
+ 	elog(DEBUG1, "Adding tz abbrev: %s, offset: %d, is_dst: %s",
+ 		   tzentry->abbrev, tzentry->offset / 900,
+ 		   tzentry->is_dst ? "yes" : "no");
+ 	/* put timezone abbrev to lowercase */
+ 	p = tzentry->abbrev;
+ 	while (*p)
+ 	{
+ 		*p = (char) pg_tolower((int)*p);
+ 		p++;
+ 	}
+ 	return 0;
+ }
+ 
+ 
+ static char *
+ tzGetLine(const char *filename, int lineno, FILE *f) {
+ 	static char tzbuf[TZBUFSIZE];
+ 	int wsidx;
+ 
+ 	if (fgets(tzbuf, TZBUFSIZE, f) == NULL)
+ 		return NULL;
+ 
+ 	if (strlen(tzbuf) == TZBUFSIZE-1) 
+ 	{
+ 		/* the line is too long */
+ 		/* fgets read to the maximum */
+ 		/* continue reading until eof or newline */
+ 		while (!feof(f))
+ 		{
+ 			if (getc(f) == '\n')
+ 				break;
+ 		}
+ 		setErrorStr("Line too long in %s on line %d: %s...",
+ 					filename, lineno, tzbuf);
+ 		return NULL;
+ 	}
+ 
+ 	/* skip over whitespace */
+ 	wsidx = 0;
+ 	while (tzbuf[wsidx] == '\t' || tzbuf[wsidx] == ' ')
+ 		wsidx++;
+ 
+ 	if (tzbuf[wsidx] == '\n')
+ 		/* empty line */
+ 		return NULL;
+ 
+ 	if (tzbuf[wsidx] == '#')
+ 		/* this is a comment line */
+ 		return NULL;
+ 
+ 	return tzbuf;
+ }
+ 
+ #define WHITESPACE " \t\n"
+ static int
+ splitTzLine(const char *filename, int lineno, char *line, tzEntry *tzentry)
+ {
+ 	char	*abbrev;
+ 	char	*offset;
+ 	char	*offset_endptr;
+ 	char	*remain;
+ 	char	*is_dst;
+ 
+ 	abbrev = strtok(line, WHITESPACE);
+ 	if (!abbrev)
+ 	{
+ 		setErrorStr("No time zone abbreviation in file %s line %d",
+ 					filename, lineno);
+ 		return -1;
+ 	}
+ 
+ 	offset = strtok(NULL, WHITESPACE);
+ 	if (!offset)
+ 	{
+ 		setErrorStr("No time zone offset definition in file %s line %d "
+ 					"(time zone abbrev %s)", filename, lineno, abbrev);
+ 		return -1;
+ 	}
+ 
+ 	tzentry->next = NULL;
+ 	tzentry->lineno = lineno;
+ 	tzentry->filename = filename;
+ 	tzentry->abbrev = abbrev;
+ 	tzentry->offset = strtod(offset, &offset_endptr);
+ 	tzentry->is_dst = false;
+ 	if (tzentry->offset == 0 && offset == offset_endptr)
+ 	{
+ 		setErrorStr("Invalid number for offset in file %s line %d: %s",
+ 					filename, lineno, offset);
+ 		return -1;
+ 	}
+ 
+ 	is_dst = strtok(NULL, WHITESPACE);
+ 	if (is_dst && strcasecmp(is_dst, "D") == 0)
+ 	{
+ 		tzentry->is_dst = true;
+ 		remain = strtok(NULL, WHITESPACE);
+ 	}
+ 	else
+ 		/* there was no 'D' dst specifier */
+ 		remain = is_dst;
+ 
+ 	if (!remain)
+ 		/* no more non-whitespace chars */
+ 		return 0;
+ 
+ 	if (remain[0] == '#')
+ 		return 0;
+ 	else
+ 	{
+ 		setErrorStr("Invalid string after time zone definition %s "
+ 					"in file %s line %d: %s",
+ 					abbrev, filename, lineno, remain);
+ 		return -1;
+ 	}
+ }
+ 
+ static tzList
+ addToList(tzList base, tzEntry *entry, bool override)
+ {
+ 	tzEntry* newRecord;
+ 	newRecord = (tzEntry*) palloc(sizeof(tzEntry));
+ 	memcpy(newRecord, entry, sizeof(tzEntry));
+ 	newRecord->abbrev = pstrdup(entry->abbrev);
+ 
+ 	if (!base || strcmp(base->abbrev, entry->abbrev) > 0)
+ 	{
+ 		newRecord->next = base;
+ 		base = newRecord;
+ 	}
+ 	else
+ 	{
+ 		tzList p = base;
+ 		while (p->next != NULL && strcmp(p->next->abbrev,
+ 										 newRecord->abbrev) < 0)
+ 			p = p->next;
+ 		if (p->next && strcmp(p->next->abbrev, newRecord->abbrev) == 0)
+ 		{
+ 			if (p->next->offset == newRecord->offset
+ 				&& p->next->is_dst == newRecord->is_dst)
+ 			{
+ 				/* ok, same abbrev but also same offset, no need to complain */
+ 				return base;
+ 			}
+ 			else if (override)
+ 			{
+ 				/* same abbrev but something is different, override */
+ 				elog(DEBUG1, "Overriding existing timezone abbreviation %s "
+ 							"with new definition from %s, line %d",
+ 							newRecord->abbrev, newRecord->filename,
+ 							newRecord->lineno);
+ 				newRecord->next = p->next->next;
+ 				p->next = newRecord;
+ 				return base;
+ 			}
+ 			else
+ 			{
+ 				/* same abbrev but something is different, complain */
+ 				setErrorStr("Time zone abbreviation %s is not unique "
+ 							"(defined in %s line %d and in %s line %d)",
+ 							newRecord->abbrev,
+ 							p->next->filename, p->next->lineno,
+ 							newRecord->filename, newRecord->lineno);
+ 				return NULL;
+ 			}
+ 		}
+ 		newRecord->next = p->next;
+ 		p->next = newRecord;
+ 	}
+ 
+ 	return base;
+ }
+ 
+ 
+ static tzList
+ tzFileParse(FILE *f, char *filename, int depth, tzList base)
+ {
+ 	char		   *line;
+ 	tzEntry			tzentry;
+ 	int				lineno = 0;
+ 	bool			override = false;
+ 
+ 	while(!feof(f)) {
+ 		lineno++;
+ 		line = tzGetLine(filename, lineno, f);
+ 		/*
+ 		 * line is NULL if
+ 		 *  - line is too long (error: errorStr set)
+ 		 *  - line is empty (no error)
+ 		 *  - line is commented (no error)
+ 		 *  - at eof (no error, but return successfully)
+ 		 */
+ 		if (ferror(f))
+ 		{
+ 			setErrorStr("Error reading from timezone file %s", filename);
+ 			return NULL;
+ 		}
+ 		if (line)
+ 		{
+ 			if (strncasecmp(line, "@INCLUDE", strlen("@INCLUDE")) == 0)
+ 			{
+ 				char* includeFile = pstrdup(line + strlen("@INCLUDE"));
+ 				includeFile = strtok(includeFile, WHITESPACE);
+ 				if (!includeFile || !*includeFile)
+ 				{
+ 					setErrorStr("@INCLUDE without filename in file %s "
+ 								"on line %d", filename, lineno);
+ 					return NULL;
+ 				}
+ 				if (!(base = ParseTzFile(includeFile, depth + 1, base)))
+ 					return NULL;
+ 				continue;
+ 			}
+ 			if (strncasecmp(line, "@OVERRIDE", strlen("@OVERRIDE")) == 0)
+ 			{
+ 				override = true;
+ 				continue;
+ 			}
+ 			if (splitTzLine(filename, lineno, line, &tzentry) != 0)
+ 				return NULL;
+ 			if (transformTzEntry(&tzentry) != 0)
+ 				return NULL;
+ 			if (!(base = addToList(base, &tzentry, override)))
+ 				return NULL;
+ 		}
+ 		else
+ 			if (errorStr)
+ 				return NULL;
+ 	}
+ 
+ 	return base;
+ }
+ 
+ /*
+  * This function parses a timezone abbreviation set. It basically just
+  *
+  *   - opens the file
+  *   - calls tzFileParse
+  *     -> note that tzFileParse can call back to this function again if it
+  *        encounters an @INCLUDE directive.
+  *
+  * In case of an error it will not elog() out but just return a NULL
+  * pointer. errorStr will be set appropriately.
+  */
+ static tzList
+ ParseTzFile(const char *tzSet, int depth, tzList List)
+ {
+ 	FILE		   *tzFile;
+ 	char		   *filename;
+ 	char			share_path[MAXPGPATH];
+ 	size_t			size;
+ 
+ 	/*
+ 	 * The maximal recursion depth is a pretty arbitrary setting.
+ 	 * It is hard to imagine that someone needs more than 3 levels so stick
+ 	 * with this conservative setting until someone complains.
+ 	 */
+ 	if (depth > 3)
+ 	{
+ 		setErrorStr("Maximal recursion depth reached");
+ 		return NULL;
+ 	}
+ 
+ 	get_share_path(my_exec_path, share_path);
+ 	size = strlen(share_path)
+ 		 + strlen("/timezone/tznames/sets/")
+ 		 + strlen(tzSet) + 1;
+ 	if (size > MAXPGPATH)
+ 	{
+ 		setErrorStr("Path to files containing time zone names is too long");
+ 		return NULL;
+ 	}
+ 	filename = (char *) palloc(size);
+ 	strcpy(filename, share_path);
+ 	strcat(filename, "/timezone/tznames/sets/");
+ 	strcat(filename, tzSet);
+ 	tzFile = AllocateFile(filename, "r");
+ 	if (!tzFile)
+ 	{
+ 		setErrorStr("Error opening file %s for reading", filename);
+ 		return NULL;
+ 	}
+ 	List = tzFileParse(tzFile, filename, depth, List);
+ 	FreeFile(tzFile);
+ 	/*
+ 	 * in case of an error, List == NULL
+ 	 */
+ 	return List;
+ }
+ 
+ void
+ load_tzoffsets(GucContext context)
+ {
+ 	MemoryContext	ParseTimeZoneMemoryContext;
+ 	MemoryContext	oldMemCtx;
+ 	tzList			List;
+ 
+ 	Assert(context == PGC_POSTMASTER || context == PGC_SIGHUP);
+ 	errorStr = NULL;
+ 
+ 	ParseTimeZoneMemoryContext = AllocSetContextCreate(TopMemoryContext,
+ 										"ParseTimeZoneHeapMemory",
+ 										ALLOCSET_SMALL_MINSIZE,
+ 										ALLOCSET_SMALL_INITSIZE,
+ 										ALLOCSET_SMALL_MAXSIZE);
+ 	oldMemCtx = MemoryContextSwitchTo(ParseTimeZoneMemoryContext);
+ 	List = ParseTzFile(timezone_abbreviations, 0, NULL);
+ 	/*
+ 	 * errorStr still lives in the ParseTimeZoneMemoryContext, we cannot
+ 	 * free it immediately here.
+ 	 */
+ 	if (List) {
+ 		/* ok, no errors, apply values */
+ 		if (context == PGC_SIGHUP)
+ 			MemoryContextReset(TimeZoneMemoryContext);
+ 		else
+ 			TimeZoneMemoryContext = AllocSetContextCreate(TopMemoryContext,
+ 										"TimeZoneHeapMemory",
+ 										ALLOCSET_SMALL_MINSIZE,
+ 										ALLOCSET_SMALL_INITSIZE,
+ 										ALLOCSET_SMALL_MAXSIZE);
+ 		MemoryContextSwitchTo(TimeZoneMemoryContext);
+ 		InitTimeZones(List);
+ 		elog(DEBUG1, "Timezone offsets successfully loaded");
+ 	}
+ 	else
+ 	{
+ 		Assert(errorStr != NULL);
+ 		if (context == PGC_SIGHUP)
+ 		{
+ 			elog(WARNING, "Error reading timezone offsets: %s", errorStr);
+ 			elog(WARNING, "Timezone offsets have not been updated.");
+ 		}
+ 		else
+ 			/* context == PGC_POSTMASTER */
+ 			elog(ERROR, "Error reading timezone offsets: %s", errorStr);
+ 		errorStr = NULL;
+ 	}
+ 	MemoryContextSwitchTo(oldMemCtx);
+ 	MemoryContextDelete(ParseTimeZoneMemoryContext);
+ }
+ 
diff -cNr cvs/pgsql/src/include/catalog/pg_proc.h cvs.build/pgsql/src/include/catalog/pg_proc.h
*** cvs/pgsql/src/include/catalog/pg_proc.h	2006-07-10 18:53:26.000000000 +0200
--- cvs.build/pgsql/src/include/catalog/pg_proc.h	2006-07-13 18:06:01.000000000 +0200
***************
*** 3717,3722 ****
--- 3717,3724 ----
  DESCR("get the prepared statements for this session");
  DATA(insert OID = 2511 (  pg_cursor PGNSP PGUID 12 f f t t s 0 2249 "" _null_ _null_ _null_ pg_cursor - _null_ ));
  DESCR("get the open cursors for this session");
+ DATA(insert OID = 2599 (  pg_timezonename PGNSP PGUID 12 f f t t s 0 2249 "" _null_ _null_ _null_ pg_timezonename - _null_ ));
+ DESCR("get the available time zone names");
  
  /* non-persistent series generator */
  DATA(insert OID = 1066 (  generate_series PGNSP PGUID 12 f f t t v 3 23 "23 23 23" _null_ _null_ _null_ generate_series_step_int4 - _null_ ));
diff -cNr cvs/pgsql/src/include/utils/datetime.h cvs.build/pgsql/src/include/utils/datetime.h
*** cvs/pgsql/src/include/utils/datetime.h	2006-06-11 20:21:39.000000000 +0200
--- cvs.build/pgsql/src/include/utils/datetime.h	2006-07-13 18:06:01.000000000 +0200
***************
*** 20,25 ****
--- 20,26 ----
  #include <math.h>
  
  #include "utils/timestamp.h"
+ #include "utils/tzparser.h"
  
  
  /* ----------------------------------------------------------------
***************
*** 266,272 ****
  #define DTERR_INTERVAL_OVERFLOW (-4)
  #define DTERR_TZDISP_OVERFLOW	(-5)
  
! 
  extern void GetCurrentDateTime(struct pg_tm * tm);
  extern void GetCurrentTimeUsec(struct pg_tm * tm, fsec_t *fsec, int *tzp);
  extern void j2date(int jd, int *year, int *month, int *day);
--- 267,274 ----
  #define DTERR_INTERVAL_OVERFLOW (-4)
  #define DTERR_TZDISP_OVERFLOW	(-5)
  
! extern int InitTimeZones(tzList tze);
! extern Datum pg_timezonename(PG_FUNCTION_ARGS);
  extern void GetCurrentDateTime(struct pg_tm * tm);
  extern void GetCurrentTimeUsec(struct pg_tm * tm, fsec_t *fsec, int *tzp);
  extern void j2date(int jd, int *year, int *month, int *day);
diff -cNr cvs/pgsql/src/include/utils/guc.h cvs.build/pgsql/src/include/utils/guc.h
*** cvs/pgsql/src/include/utils/guc.h	2006-05-15 22:59:45.000000000 +0200
--- cvs.build/pgsql/src/include/utils/guc.h	2006-07-13 18:06:01.000000000 +0200
***************
*** 132,137 ****
--- 132,138 ----
  extern char *HbaFileName;
  extern char *IdentFileName;
  extern char *external_pid_file;
+ extern char *timezone_abbreviations;
  
  extern int	tcp_keepalives_idle;
  extern int	tcp_keepalives_interval;
diff -cNr cvs/pgsql/src/include/utils/tzparser.h cvs.build/pgsql/src/include/utils/tzparser.h
*** cvs/pgsql/src/include/utils/tzparser.h	1970-01-01 01:00:00.000000000 +0100
--- cvs.build/pgsql/src/include/utils/tzparser.h	2006-07-13 18:06:01.000000000 +0200
***************
*** 0 ****
--- 1,37 ----
+ /*-------------------------------------------------------------------------
+  *
+  * tzparser.h
+  *	  Timezone offset file parsing definitions.
+  *
+  * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
+  * Portions Copyright (c) 1994, Regents of the University of California
+  *
+  * IDENTIFICATION
+  *
+  *-------------------------------------------------------------------------
+  */
+ 
+ #ifndef PG_TZPARSER_H
+ #define PG_TZPARSER_H
+ 
+ #include "utils/guc.h"
+ 
+ struct tzEntry {
+ 	char *abbrev;
+ 	int offset;
+ 	int lineno;
+ 	const char *filename;
+ 	bool is_dst;
+ 	struct tzEntry *next;
+ };
+ 
+ /*
+  * tzList is actually just a tzEntry* but it will be used whenever the
+  * semantical meaning is "base pointer to linked list".
+  */
+ typedef struct tzEntry tzEntry;
+ typedef struct tzEntry * tzList;
+ 
+ void load_tzoffsets(GucContext context);
+ 
+ #endif /* PG_TZPARSER_H */
diff -cNr cvs/pgsql/src/test/regress/expected/horology.out cvs.build/pgsql/src/test/regress/expected/horology.out
*** cvs/pgsql/src/test/regress/expected/horology.out	2006-07-10 18:53:27.000000000 +0200
--- cvs.build/pgsql/src/test/regress/expected/horology.out	2006-07-13 18:06:01.000000000 +0200
***************
*** 1,8 ****
  --
  -- HOROLOGY
  --
- -- needed so tests pass even in Australia
- SET australian_timezones = 'off';
  SET DateStyle = 'Postgres, MDY';
  --
  -- Test various input formats
--- 1,6 ----
diff -cNr cvs/pgsql/src/test/regress/expected/timestamp.out cvs.build/pgsql/src/test/regress/expected/timestamp.out
*** cvs/pgsql/src/test/regress/expected/timestamp.out	2006-07-10 18:53:27.000000000 +0200
--- cvs.build/pgsql/src/test/regress/expected/timestamp.out	2006-07-13 18:06:01.000000000 +0200
***************
*** 1,8 ****
  --
  -- TIMESTAMP
  --
- -- needed so tests pass even in Australia
- SET australian_timezones = 'off';
  CREATE TABLE TIMESTAMP_TBL ( d1 timestamp(2) without time zone);
  -- Shorthand values
  -- Not directly usable for regression testing since these are not constants.
--- 1,6 ----
diff -cNr cvs/pgsql/src/test/regress/expected/timestamptz.out cvs.build/pgsql/src/test/regress/expected/timestamptz.out
*** cvs/pgsql/src/test/regress/expected/timestamptz.out	2006-07-10 18:53:27.000000000 +0200
--- cvs.build/pgsql/src/test/regress/expected/timestamptz.out	2006-07-13 18:06:01.000000000 +0200
***************
*** 1,8 ****
  --
  -- TIMESTAMPTZ
  --
- -- needed so tests pass even in Australia
- SET australian_timezones = 'off';
  CREATE TABLE TIMESTAMPTZ_TBL ( d1 timestamp(2) with time zone);
  INSERT INTO TIMESTAMPTZ_TBL VALUES ('now');
  INSERT INTO TIMESTAMPTZ_TBL VALUES ('current');
--- 1,6 ----
diff -cNr cvs/pgsql/src/test/regress/sql/horology.sql cvs.build/pgsql/src/test/regress/sql/horology.sql
*** cvs/pgsql/src/test/regress/sql/horology.sql	2006-04-17 23:05:02.000000000 +0200
--- cvs.build/pgsql/src/test/regress/sql/horology.sql	2006-07-13 18:06:01.000000000 +0200
***************
*** 1,8 ****
  --
  -- HOROLOGY
  --
- -- needed so tests pass even in Australia
- SET australian_timezones = 'off';
  SET DateStyle = 'Postgres, MDY';
  
  --
--- 1,6 ----
diff -cNr cvs/pgsql/src/test/regress/sql/timestamp.sql cvs.build/pgsql/src/test/regress/sql/timestamp.sql
*** cvs/pgsql/src/test/regress/sql/timestamp.sql	2006-07-10 18:53:27.000000000 +0200
--- cvs.build/pgsql/src/test/regress/sql/timestamp.sql	2006-07-13 18:06:01.000000000 +0200
***************
*** 1,8 ****
  --
  -- TIMESTAMP
  --
- -- needed so tests pass even in Australia
- SET australian_timezones = 'off';
  
  CREATE TABLE TIMESTAMP_TBL ( d1 timestamp(2) without time zone);
  
--- 1,6 ----
diff -cNr cvs/pgsql/src/test/regress/sql/timestamptz.sql cvs.build/pgsql/src/test/regress/sql/timestamptz.sql
*** cvs/pgsql/src/test/regress/sql/timestamptz.sql	2006-07-10 18:53:27.000000000 +0200
--- cvs.build/pgsql/src/test/regress/sql/timestamptz.sql	2006-07-13 18:06:01.000000000 +0200
***************
*** 1,8 ****
  --
  -- TIMESTAMPTZ
  --
- -- needed so tests pass even in Australia
- SET australian_timezones = 'off';
  
  CREATE TABLE TIMESTAMPTZ_TBL ( d1 timestamp(2) with time zone);
  
--- 1,6 ----
diff -cNr cvs/pgsql/src/timezone/Makefile cvs.build/pgsql/src/timezone/Makefile
*** cvs/pgsql/src/timezone/Makefile	2005-12-09 22:19:36.000000000 +0100
--- cvs.build/pgsql/src/timezone/Makefile	2006-07-13 18:06:01.000000000 +0200
***************
*** 35,45 ****
--- 35,47 ----
  
  install: all installdirs
  	./zic -d '$(DESTDIR)$(datadir)/timezone' $(TZDATAFILES)
+ 	$(MAKE) -C tznames $@
  
  installdirs:
  	$(mkinstalldirs) '$(DESTDIR)$(datadir)'
  
  uninstall:
+ 	$(MAKE) -C tznames $@
  	rm -rf '$(DESTDIR)$(datadir)/timezone'
  
  clean distclean maintainer-clean:
diff -cNr cvs/pgsql/src/timezone/README cvs.build/pgsql/src/timezone/README
*** cvs/pgsql/src/timezone/README	2004-10-24 17:01:54.000000000 +0200
--- cvs.build/pgsql/src/timezone/README	2006-07-13 18:06:01.000000000 +0200
***************
*** 11,13 ****
--- 11,21 ----
  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, like for example Georgia in 2004. Just grepping in the
+ zic database files for 2004 makes us spot such a change. Then the
+ file(s) in tznames/template in in tznames/set should be updated.
+ 
diff -cNr cvs/pgsql/src/timezone/tznames/Makefile cvs.build/pgsql/src/timezone/tznames/Makefile
*** cvs/pgsql/src/timezone/tznames/Makefile	1970-01-01 01:00:00.000000000 +0100
--- cvs.build/pgsql/src/timezone/tznames/Makefile	2006-07-13 18:06:01.000000000 +0200
***************
*** 0 ****
--- 1,30 ----
+ #-------------------------------------------------------------------------
+ #
+ # Makefile
+ #    Makefile for the timezone names
+ 
+ # IDENTIFICATION
+ #
+ #-------------------------------------------------------------------------
+ 
+ subdir = src/timezone/tznames
+ top_builddir = ../../..
+ include $(top_builddir)/src/Makefile.global
+ 
+ TZNAMES_TEMPLATES := Africa.txt America.txt Antarctica.txt Asia.txt Atlantic.txt Australia.txt Etc.txt Europe.txt Indian.txt Pacific.txt
+ TZNAMES_TEMPLATES_FILES := $(TZNAMES_TEMPLATES:%=$(srcdir)/templates/%)
+ 
+ TZNAMES_SETS := Default Australia India Israel
+ TZNAMES_SETS_FILES := $(TZNAMES_SETS:%=$(srcdir)/sets/%)
+ 
+ install: installdirs
+ 	$(INSTALL_DATA) $(TZNAMES_TEMPLATES_FILES) '$(DESTDIR)$(datadir)/timezone/tznames/templates'
+ 	$(INSTALL_DATA) $(TZNAMES_SETS_FILES) '$(DESTDIR)$(datadir)/timezone/tznames/sets'
+ 
+ installdirs:
+ 	$(mkinstalldirs) '$(DESTDIR)$(datadir)/timezone/tznames/templates'
+ 	$(mkinstalldirs) '$(DESTDIR)$(datadir)/timezone/tznames/sets'
+ 
+ uninstall:
+ 	rm -rf '$(DESTDIR)$(datadir)/timezone/tznames'
+ 
diff -cNr cvs/pgsql/src/timezone/tznames/sets/Australia cvs.build/pgsql/src/timezone/tznames/sets/Australia
*** cvs/pgsql/src/timezone/tznames/sets/Australia	1970-01-01 01:00:00.000000000 +0100
--- cvs.build/pgsql/src/timezone/tznames/sets/Australia	2006-07-13 18:06:35.000000000 +0200
***************
*** 0 ****
--- 1,35 ----
+ # Time zone configuration file for set "Australia"
+ 
+ # In order to use this file, you need to set
+ #
+ #    timezone_abbreviations = 'Australia'
+ #
+ # in your postgresql.conf configuration file.
+ 
+ 
+ # include the default set
+ @INCLUDE Default
+ 
+ # most timezones are already defined in the default set. With the OVERRIDE
+ # option, PostgreSQL will use the new definitions instead of throwing an error
+ # in case of a conflict.
+ @OVERRIDE
+ 
+ ACST    34200    # Central Australia Standard Time (not in zic)
+ CST     34200    # Central Standard Time (Australia)
+                  #     (Australia/Adelaide)
+                  #     (Australia/Broken_Hill)
+ EAST    36000    # East Australian Standard Time (Australia) (not in zic)
+ EST     36000    # Eastern Standard Time (Australia)
+                  #     (Australia/Currie)
+                  #     (Australia/Hobart)
+                  #     (Australia/Melbourne)
+                  #     (Australia/Sydney)
+                  #     (Australia/Currie)
+                  #     (Australia/Hobart)
+                  #     (Australia/Melbourne)
+                  #     (Australia/Sydney)
+ SAT     34200    # South Australian Standard Time (not in zic)
+ WST     28800    # Western Standard Time (Australia)
+                  #     (Antarctica/Casey)
+                  #     (Australia/Perth)
diff -cNr cvs/pgsql/src/timezone/tznames/sets/Default cvs.build/pgsql/src/timezone/tznames/sets/Default
*** cvs/pgsql/src/timezone/tznames/sets/Default	1970-01-01 01:00:00.000000000 +0100
--- cvs.build/pgsql/src/timezone/tznames/sets/Default	2006-07-13 18:06:01.000000000 +0200
***************
*** 0 ****
--- 1,744 ----
+ # Time zone configuration file for set "Default"
+ 
+ # In order to use this file, you need to set
+ #
+ #    timezone_abbreviations = 'Default'
+ #
+ # in your postgresql.conf configuration file.
+ 
+ # This file contains all basic time zones. Most people will be happy with just
+ # this file, others might want to redefine or override time zone abbreviations
+ # from this file. Look at the other sets in this directory to see how to do
+ # this (take a look at the set for Australia for example).
+ #
+ # Basically you can include another set with
+ #
+ # @INCLUDE <other file>
+ #
+ # Most often you will want to include the default set. To do this, write
+ #
+ # @INCLUDE Default
+ #
+ # Normally if PostgreSQL finds out that you have used the same time zone
+ # abbreviation twice with different offsets it will raise an error. You can
+ # however also make one set override the other, to do this, just set
+ #
+ # @OVERRIDE
+ #
+ # in the set that should override other sets. Note that the override property
+ # does not propagate to included files.
+ 
+ # The basic format for this file is:
+ #
+ # XDT    7200  D     # Your comment here
+ # XST   -3600        # Your comment here
+ #
+ # That means that the timezone abbreviation XDT (which does not exist in
+ # reality) has an offset of 7200 seconds to GMT and is a Daylight Savings Time
+ # because there is a 'D' after the offset. XST is no Daylight Savings Time and
+ # has an offset of -3600s to GMT.
+ #
+ # Normally you would never have to specify these lines for yourself. Just look
+ # into ../templates/ to find most of the existing time zone offsets already
+ # defined. You just have to copy them over into your set file.
+ 
+ # If you think that a time zone abbreviation is missing here, please report it
+ # to <pgsql-hackers@postgresql.org>. It can then be included in future
+ # releases. For the time being you can always add your own definitions.
+ 
+ 
+ #################### AFRICA ####################
+ 
+ EAT     10800    # East Africa Time
+                  #     (Africa/Addis_Ababa)
+                  #     (Africa/Asmera)
+                  #     (Africa/Dar_es_Salaam)
+                  #     (Africa/Djibouti)
+                  #     (Africa/Kampala)
+                  #     (Africa/Khartoum)
+                  #     (Africa/Mogadishu)
+                  #     (Africa/Nairobi)
+                  #     (Indian/Antananarivo)
+                  #     (Indian/Comoro)
+                  #     (Indian/Mayotte)
+ WAT      3600    # West Africa Time
+                  #     (Africa/Bangui)
+                  #     (Africa/Brazzaville)
+                  #     (Africa/Douala)
+                  #     (Africa/Kinshasa)
+                  #     (Africa/Lagos)
+                  #     (Africa/Libreville)
+                  #     (Africa/Luanda)
+                  #     (Africa/Malabo)
+                  #     (Africa/Ndjamena)
+                  #     (Africa/Niamey)
+                  #     (Africa/Porto-Novo)
+                  #     (Africa/Windhoek)
+ 
+ #################### AMERICA ####################
+ 
+ # Acre time is sometimes called Acre Standard Time (AST) which leads to a
+ # conflict with AST (see below at AST)
+ ACT    -18000    # Acre Time
+                  #     (America/Eirunepe)
+                  #     (America/Rio_Branco)
+ ACST   -14400 D  # Acre Summer Time
+                  #     (America/Eirunepe)
+                  #     (America/Rio_Branco)
+ AKDT   -28800 D  # Alaska Daylight Time
+                  #     (America/Anchorage)
+                  #     (America/Juneau)
+                  #     (America/Nome)
+                  #     (America/Yakutat)
+ AKST   -32400    # Alaska Standard Time
+                  #     (America/Anchorage)
+                  #     (America/Juneau)
+                  #     (America/Nome)
+                  #     (America/Yakutat)
+ ART    -10800    # Argentina Time (not in zic)
+ BOT    -14400    # Bolivia Time
+                  #     (America/La_Paz)
+ BRA    -10800    # Brazil Time (not in zic)
+ BRST    -7200 D  # Brasil Summer Time
+                  #     (America/Sao_Paulo)
+ BRT    -10800    # Brasil Time
+                  #     (America/Araguaina)
+                  #     (America/Bahia)
+                  #     (America/Belem)
+                  #     (America/Fortaleza)
+                  #     (America/Maceio)
+                  #     (America/Recife)
+                  #     (America/Sao_Paulo)
+ COT    -18000    # Columbia Time (not in zic)
+ # CONFLICT! CDT is not unique
+ # Other timezones:
+ #  - CDT: Mexico Central Daylight Time (America)
+ #  - CDT: Cuba Central Daylight Time (America)
+ #  - CDT: Canada Central Daylight Time (America)
+ CDT    -18000 D  # Central Daylight Time
+                  #     (America/Cancun)
+                  #     (America/Chicago)
+                  #     (America/Menominee)
+                  #     (America/Merida)
+                  #     (America/Mexico_City)
+                  #     (America/Monterrey)
+                  #     (America/North_Dakota/Center)
+                  #     (America/Rainy_River)
+                  #     (America/Rankin_Inlet)
+                  #     (America/Winnipeg)
+ CLST   -10800 D  # Chile Summer Time
+                  #     (America/Santiago)
+                  #     (Antarctica/Palmer)
+ CLT    -14400    # Chile Time
+                  #     (America/Santiago)
+                  #     (Antarctica/Palmer)
+ # CONFLICT! CST is not unique
+ # Other timezones:
+ #  - CST: Central Standard Time (Australia)
+ #  - CST: Cuba Central Standard Time (America)
+ CST    -21600    # Central Standard Time (America)
+                  #     (America/Cancun)
+                  #     (America/Chicago)
+                  #     (America/Menominee)
+                  #     (America/Merida)
+                  #     (America/Mexico_City)
+                  #     (America/Monterrey)
+                  #     (America/North_Dakota/Center)
+                  #     (America/Rainy_River)
+                  #     (America/Rankin_Inlet)
+                  #     (America/Regina)
+                  #     (America/Swift_Current)
+                  #     (America/Winnipeg)
+ EDT    -14400 D  # Eastern Daylight Saving Time
+                  #     (America/Detroit)
+                  #     (America/Grand_Turk)
+                  #     (America/Indiana/Indianapolis)
+                  #     (America/Indiana/Knox)
+                  #     (America/Indiana/Marengo)
+                  #     (America/Indiana/Vevay)
+                  #     (America/Iqaluit)
+                  #     (America/Kentucky/Louisville)
+                  #     (America/Kentucky/Monticello)
+                  #     (America/Montreal)
+                  #     (America/Nassau)
+                  #     (America/New_York)
+                  #     (America/Nipigon)
+                  #     (America/Pangnirtung)
+                  #     (America/Thunder_Bay)
+                  #     (America/Toronto)
+ EGST        0 D  # East Greenland Summer Time
+                  #     (America/Scoresbysund)
+ EGT     -3600    # East Greenland Time (Svalbard & Jan Mayen)
+                  #     (America/Scoresbysund)
+ # CONFLICT! EST is not unique
+ # Other timezones:
+ #  - EST: Eastern Standard Time (Australia)
+ EST    -18000    # Eastern Standard Time (America)
+                  #     (America/Cayman)
+                  #     (America/Coral_Harbour)
+                  #     (America/Detroit)
+                  #     (America/Grand_Turk)
+                  #     (America/Indiana/Indianapolis)
+                  #     (America/Indiana/Knox)
+                  #     (America/Indiana/Marengo)
+                  #     (America/Indiana/Vevay)
+                  #     (America/Iqaluit)
+                  #     (America/Jamaica)
+                  #     (America/Kentucky/Louisville)
+                  #     (America/Kentucky/Monticello)
+                  #     (America/Montreal)
+                  #     (America/Nassau)
+                  #     (America/New_York)
+                  #     (America/Nipigon)
+                  #     (America/Panama)
+                  #     (America/Pangnirtung)
+                  #     (America/Thunder_Bay)
+                  #     (America/Toronto)
+ FNT     -7200    # Fernando de Noronha Time
+                  #     (America/Noronha)
+ FNST    -3600 D  # Fernando de Noronha Summer Time (not in zic)
+                  #     (America/Noronha)
+ GFT    -10800    # French Guiana Time
+                  #     (America/Cayenne)
+ GYT    -14400    # Guyana Time
+                  #     (America/Guyana)
+ MDT    -21600 D  # Mexico Mountain Daylight Time
+                  # Mountain Daylight Time
+                  #     (America/Boise)
+                  #     (America/Cambridge_Bay)
+                  #     (America/Chihuahua)
+                  #     (America/Denver)
+                  #     (America/Edmonton)
+                  #     (America/Inuvik)
+                  #     (America/Mazatlan)
+                  #     (America/Yellowknife)
+ MST    -25200    # Mexico Mountain Standard Time
+                  # Mountain Standard Time
+                  #     (America/Boise)
+                  #     (America/Cambridge_Bay)
+                  #     (America/Chihuahua)
+                  #     (America/Dawson_Creek)
+                  #     (America/Denver)
+                  #     (America/Edmonton)
+                  #     (America/Hermosillo)
+                  #     (America/Inuvik)
+                  #     (America/Mazatlan)
+                  #     (America/Phoenix)
+                  #     (America/Yellowknife)
+ NDT     -9000 D  # Newfoundland Daylight Time
+                  #     (America/St_Johns)
+ NST    -12600    # Newfoundland Standard Time
+                  #     (America/St_Johns)
+ PET    -18000    # Peru Time (not in zic)
+ PDT    -25200 D  # Pacific Daylight Time
+                  #     (America/Dawson)
+                  #     (America/Los_Angeles)
+                  #     (America/Tijuana)
+                  #     (America/Vancouver)
+                  #     (America/Whitehorse)
+ PMDT    -7200 D  # Pierre & Miquelon Daylight Time
+                  #     (America/Miquelon)
+ PMST   -10800    # Pierre & Miquelon Standard Time
+                  #     (America/Miquelon)
+ PST    -28800    # Pacific Standard Time
+                  #     (America/Dawson)
+                  #     (America/Los_Angeles)
+                  #     (America/Tijuana)
+                  #     (America/Vancouver)
+                  #     (America/Whitehorse)
+                  #     (Pacific/Pitcairn)
+ PYST   -10800 D  # Paraguay Summer Time
+                  #     (America/Asuncion)
+ PYT    -14400    # Paraguay Time
+                  #     (America/Asuncion)
+ UYST    -7200 D  # Uruguay Summer Time (not in zic)
+ UYT    -10800    # Uruguay Time (not in zic)
+ VET    -14400    # Venezuela Time
+                  #     (America/Caracas)
+ WGST    -7200 D  # Western Greenland Summer Time
+                  #     (America/Godthab)
+ WGT    -10800    # West Greenland Time
+                  #     (America/Godthab)
+ 
+ #################### ANTARCTICA ####################
+ 
+ DAVT    25200    # Davis Time (Antarctica)
+                  #     (Antarctica/Davis)
+ DDUT    36000    # Dumont-d'Urville Time (Antarctica)
+                  #     (Antarctica/DumontDUrville)
+                  #     (Antarctica/Palmer)
+                  #     (America/Santiago)
+ MAWT    21600    # Mawson Time (Antarctica)
+                  #     (Antarctica/Mawson)
+ 
+ #################### ASIA ####################
+ 
+ AFT     16200    # Afghanistan Time
+                  #     (Asia/Kabul)
+ ALMT    21600    # Alma-Ata Time
+                  #     (Asia/Almaty)
+ ALMST   25200 D  # Alma-Ata Summer Time
+                  #     (Asia/Almaty)
+ AMST    18000 D  # Armenia Summer Time
+                  #     (Asia/Yerevan)
+ # CONFLICT! AMT is not unique
+ # Other timezones:
+ #  - AMT: Amazon Time (America)
+ AMT     14400    # Armenia Time
+                  #     (Asia/Yerevan)
+ ANAST   46800 D  # Anadyr Summer Time
+                  #     (Asia/Anadyr)
+ ANAT    43200    # Anadyr Time
+                  #     (Asia/Anadyr)
+ AZST    18000 D  # Azerbaijan Summer Time
+                  #     (Asia/Baku)
+ AZT     14400    # Azerbaijan Time
+                  #     (Asia/Baku)
+ BDT     21600    # Bangladesh Time
+                  #     (Asia/Dhaka)
+ BNT     28800    # Brunei Darussalam Time
+                  #     (Asia/Brunei)
+ BORT    28800    # Borneo Time (Indonesia) (not in zic)
+ BTT     21600    # Bhutan Time
+                  #     (Asia/Thimphu)
+ CCT     28800    # China Coastal Time (not in zic)
+ GEST    14400 D  # Georgia Summer Time (there was a timezone change in 2004)
+                  #     (Asia/Tbilisi)
+ GET     10800    # Georgia Time (there was a timezone change in 2004)
+                  #     (Asia/Tbilisi)
+ HKT     28800    # Hong Kong Time (not in zic)
+ ICT     25200    # Indochina Time
+                  #     (Asia/Bangkok)
+                  #     (Asia/Phnom_Penh)
+                  #     (Asia/Saigon)
+                  #     (Asia/Vientiane)
+ IRKST   32400 D  # Irkutsk Summer Time
+                  #     (Asia/Irkutsk)
+ IRKT    28800    # Irkutsk Time
+                  #     (Asia/Irkutsk)
+ IRT     12600    # Iran Time (not in zic)
+ # CONFLICT! IST is not unique
+ # Other timezones:
+ # - IST: Irish Summer Time (Europe)
+ # - IST: Indian Standard Time (Asia)
+ IST      7200    # Israel Standard Time (not in zic)
+ JAYT    32400    # Jayapura Time (Indonesia) (not in zic)
+ KDT     36000 D  # Korean Daylight Time (not in zic)
+ KGST    21600 D  # Kyrgyzstan Summer Time
+                  #     (Asia/Bishkek)
+ KGT     18000    # Kyrgyzstan Time
+                  #     (Asia/Bishkek)
+ KRAST   28800 D  # Krasnoyarsk Summer Time
+                  #     (Asia/Krasnoyarsk)
+ KRAT    25200    # Krasnoyarsk Time
+                  #     (Asia/Krasnoyarsk)
+ KST     32400    # Korean Standard Time
+                  #     (Asia/Pyongyang)
+ LKT     21600    # Lanka Time
+                  #     (Asia/Colombo)
+ MAGST   43200 D  # Magadan Summer Time
+                  #     (Asia/Magadan)
+ MAGT    39600    # Magadan Time
+                  #     (Asia/Magadan)
+ MMT     23400    # Myanmar Time
+                  #     (Asia/Rangoon)
+ MYT     28800    # Malaysia Time
+                  #     (Asia/Kuala_Lumpur)
+                  #     (Asia/Kuching)
+ NOVST   25200 D  # Novosibirsk Summer Time
+                  #     (Asia/Novosibirsk)
+ NOVT    21600    # Novosibirsk Time
+                  #     (Asia/Novosibirsk)
+ NPT     20700    # Nepal Time
+                  #     (Asia/Katmandu)
+ OMSST   25200 D  # Omsk Summer Time
+                  #     (Asia/Omsk)
+ OMST    21600    # Omsk Time
+                  #     (Asia/Omsk)
+ PETST   46800 D  # Petropavlovsk-Kamchatski Summer Time
+                  #     (Asia/Kamchatka)
+ PETT    43200    # Petropavlovsk-Kamchatski Time
+                  #     (Asia/Kamchatka)
+ PHT     28800    # Phillipine Time (not in zic)
+ PKT     18000    # Pakistan Time (not in zic)
+ TJT     18000    # Tajikistan Time
+                  #     (Asia/Dushanbe)
+ TMT     18000    # Turkmenistan Time
+                  #     (Asia/Ashgabat)
+ ULAST   32400 D  # Ulan Bator Summer Time
+                  #     (Asia/Ulaanbaatar)
+ ULAT    28800    # Ulan Bator Time
+                  #     (Asia/Ulaanbaatar)
+ UZST    21600 D  # Uzbekistan Summer Time
+                  #     (Asia/Samarkand)
+                  #     (Asia/Tashkent)
+ UZT     18000    # Uzbekistan Time
+                  #     (Asia/Samarkand)
+                  #     (Asia/Tashkent)
+ VLAST   39600 D  # Vladivostok Summer Time
+                  #     (Asia/Vladivostok)
+ VLAT    36000    # Vladivostok Time
+                  #     (Asia/Vladivostok)
+ YAKST   36000 D  # Yakutsk Summer Time
+                  #     (Asia/Yakutsk)
+ YAKT    32400    # Yakutsk Time
+                  #     (Asia/Yakutsk)
+ YEKST   21600 D  # Yekaterinburg Summer Time
+                  #     (Asia/Yekaterinburg)
+ YEKT    18000    # Yekaterinburg Time
+                  #     (Asia/Yekaterinburg)
+ 
+ #################### ATLANTIC ####################
+ 
+ # CONFLICT! ADT is not unique
+ # Other timezones:
+ #  - ADT: Arabic Daylight Time (Asia)
+ ADT    -10800 D  # Atlantic Daylight Time
+                  #     (America/Glace_Bay)
+                  #     (America/Goose_Bay)
+                  #     (America/Halifax)
+                  #     (America/Thule)
+                  #     (Atlantic/Bermuda)
+ # CONFLICT! AST is not unique
+ # Other timezones:
+ #  - AST: Arabic Standard Time (Asia)
+ #  - AST: Al Manamah Standard Time (Asia) same offset as Arabia Standard Time
+ #  - AST/ACT: Acre Standard Time (America) listed as ACT
+ #  - AST: Anguilla Standard Time (America) same offset
+ #  - AST: Antigua Standard Time (America) same offset
+ #  - AST: Antilles Standard Time (America) same offset
+ AST    -14400    # Atlantic Standard Time
+                  #     (America/Anguilla)
+                  #     (America/Antigua)
+                  #     (America/Aruba)
+                  #     (America/Curacao)
+                  #     (America/Dominica)
+                  #     (America/Glace_Bay)
+                  #     (America/Goose_Bay)
+                  #     (America/Grenada)
+                  #     (America/Guadeloupe)
+                  #     (America/Halifax)
+                  #     (America/Martinique)
+                  #     (America/Montserrat)
+                  #     (America/Port_of_Spain)
+                  #     (America/Puerto_Rico)
+                  #     (America/Santo_Domingo)
+                  #     (America/St_Kitts)
+                  #     (America/St_Lucia)
+                  #     (America/St_Thomas)
+                  #     (America/St_Vincent)
+                  #     (America/Thule)
+                  #     (America/Tortola)
+                  #     (Atlantic/Bermuda)
+ AZOST       0 D  # Azores Summer Time
+                  #     (Atlantic/Azores)
+ AZOT    -3600    # Azores Time
+                  #     (Atlantic/Azores)
+ FKST   -10800 D  # Falkland Islands Summer Time
+                  #     (Atlantic/Stanley)
+ FKT    -14400    # Falkland Islands Time
+                  #     (Atlantic/Stanley)
+ 
+ #################### AUSTRALIA ####################
+ 
+ ACSST   37800 D  # Central Australia (not in zic)
+ AESST   39600 D  # Australia Eastern Summer Standard Time (not in zic)
+ AEST    36000    # Australia Eastern Standard Time (not in zic)
+ AWSST   32400 D  # Australia Western Summer Standard Time (not in zic)
+ AWST    28800    # Australia Western Standard Time (not in zic)
+ CADT    37800 D  # Central Australia Daylight-Saving Time (not in zic)
+ CAST    34200    # Central Australia Standard Time (not in zic)
+ LHDT    39600 D  # Lord Howe Daylight Time, Australia (not in zic)
+ LHST    37800    # Lord Howe Standard Time (Australia)
+                  #     (Australia/Lord_Howe)
+ LIGT    36000    # Melbourne, Australia (not in zic)
+ NZT     43200    # New Zealand Time (not in zic)
+ SADT    37800 D  # South Australian Daylight-Saving Time (not in zic)
+ SAST    34200    # South Australian Standard Time (not in zic)
+ WADT    28800 D  # West Australian Daylight-Saving Time (not in zic)
+ WAST    25200    # West Australian Standard Time (not in zic)
+ WDT     32400 D  # West Australian Daylight-Saving Time (not in zic)
+ 
+ #################### ETC ####################
+ 
+ GMT         0    # Greenwich Mean Time
+                  #     (Africa/Abidjan)
+                  #     (Africa/Bamako)
+                  #     (Africa/Banjul)
+                  #     (Africa/Bissau)
+                  #     (Africa/Conakry)
+                  #     (Africa/Dakar)
+                  #     (Africa/Lome)
+                  #     (Africa/Monrovia)
+                  #     (Africa/Nouakchott)
+                  #     (Africa/Ouagadougou)
+                  #     (Africa/Sao_Tome)
+                  #     (America/Danmarkshavn)
+                  #     (Atlantic/Reykjavik)
+                  #     (Atlantic/St_Helena)
+                  #     (Etc/GMT)
+                  #     (Europe/Dublin)
+                  #     (Europe/London)
+ UCT         0    # Universal Coordinated Time
+                  #     (Etc/UCT)
+ UT          0    # Universal Time (not in zic)
+ UTC         0    # Coordinated Universal Time
+ Z           0    # Zulu
+ ZULU        0    # Zulu
+ 
+ #################### EUROPE ####################
+ 
+ BST      3600 D  # British Summer Time
+                  # Brazil Standard Time
+                  # Bering Summer Time
+                  #     (Europe/London)
+ BDST     7200 D  # British Double Summer Time
+ CEST     7200 D  # Central Europe Summer Time
+                  #     (Africa/Ceuta)
+                  #     (Europe/Amsterdam)
+                  #     (Europe/Andorra)
+                  #     (Europe/Belgrade)
+                  #     (Europe/Berlin)
+                  #     (Europe/Brussels)
+                  #     (Europe/Budapest)
+                  #     (Europe/Copenhagen)
+                  #     (Europe/Gibraltar)
+                  #     (Europe/Luxembourg)
+                  #     (Europe/Madrid)
+                  #     (Europe/Malta)
+                  #     (Europe/Monaco)
+                  #     (Europe/Oslo)
+                  #     (Europe/Paris)
+                  #     (Europe/Prague)
+                  #     (Europe/Rome)
+                  #     (Europe/Stockholm)
+                  #     (Europe/Tirane)
+                  #     (Europe/Vaduz)
+                  #     (Europe/Vienna)
+                  #     (Europe/Warsaw)
+                  #     (Europe/Zurich)
+ CET      3600    # Central Europe Time
+                  #     (Africa/Algiers)
+                  #     (Africa/Ceuta)
+                  #     (Europe/Amsterdam)
+                  #     (Europe/Andorra)
+                  #     (Europe/Belgrade)
+                  #     (Europe/Berlin)
+                  #     (Europe/Brussels)
+                  #     (Europe/Budapest)
+                  #     (Europe/Copenhagen)
+                  #     (Europe/Gibraltar)
+                  #     (Europe/Luxembourg)
+                  #     (Europe/Madrid)
+                  #     (Europe/Malta)
+                  #     (Europe/Monaco)
+                  #     (Europe/Oslo)
+                  #     (Europe/Paris)
+                  #     (Europe/Prague)
+                  #     (Europe/Rome)
+                  #     (Europe/Stockholm)
+                  #     (Europe/Tirane)
+                  #     (Europe/Vaduz)
+                  #     (Europe/Vienna)
+                  #     (Europe/Warsaw)
+                  #     (Europe/Zurich)
+ CETDST   7200 D  # Central Europe Summer Time
+                  #     (Africa/Ceuta)
+                  #     (Europe/Amsterdam)
+                  #     (Europe/Andorra)
+                  #     (Europe/Belgrade)
+                  #     (Europe/Berlin)
+                  #     (Europe/Brussels)
+                  #     (Europe/Budapest)
+                  #     (Europe/Copenhagen)
+                  #     (Europe/Gibraltar)
+                  #     (Europe/Luxembourg)
+                  #     (Europe/Madrid)
+                  #     (Europe/Malta)
+                  #     (Europe/Monaco)
+                  #     (Europe/Oslo)
+                  #     (Europe/Paris)
+                  #     (Europe/Prague)
+                  #     (Europe/Rome)
+                  #     (Europe/Stockholm)
+                  #     (Europe/Tirane)
+                  #     (Europe/Vaduz)
+                  #     (Europe/Vienna)
+                  #     (Europe/Warsaw)
+                  #     (Europe/Zurich)
+ EEST    10800 D  # East-Egypt Summertime
+                  # Eastern Europe Summer Time
+                  #     (Africa/Cairo)
+                  #     (Asia/Amman)
+                  #     (Asia/Beirut)
+                  #     (Asia/Damascus)
+                  #     (Asia/Gaza)
+                  #     (Asia/Nicosia)
+                  #     (Europe/Athens)
+                  #     (Europe/Bucharest)
+                  #     (Europe/Chisinau)
+                  #     (Europe/Helsinki)
+                  #     (Europe/Istanbul)
+                  #     (Europe/Kaliningrad)
+                  #     (Europe/Kiev)
+                  #     (Europe/Minsk)
+                  #     (Europe/Riga)
+                  #     (Europe/Simferopol)
+                  #     (Europe/Sofia)
+                  #     (Europe/Tallinn)
+                  #     (Europe/Uzhgorod)
+                  #     (Europe/Vilnius)
+                  #     (Europe/Zaporozhye)
+ EET      7200    # East-Egypt Time
+                  # Eastern Europe Time
+                  #     (Africa/Cairo)
+                  #     (Africa/Tripoli)
+                  #     (Asia/Amman)
+                  #     (Asia/Beirut)
+                  #     (Asia/Damascus)
+                  #     (Asia/Gaza)
+                  #     (Asia/Nicosia)
+                  #     (Europe/Athens)
+                  #     (Europe/Bucharest)
+                  #     (Europe/Chisinau)
+                  #     (Europe/Helsinki)
+                  #     (Europe/Istanbul)
+                  #     (Europe/Kaliningrad)
+                  #     (Europe/Kiev)
+                  #     (Europe/Minsk)
+                  #     (Europe/Riga)
+                  #     (Europe/Simferopol)
+                  #     (Europe/Sofia)
+                  #     (Europe/Tallinn)
+                  #     (Europe/Uzhgorod)
+                  #     (Europe/Vilnius)
+                  #     (Europe/Zaporozhye)
+ EETDST  10800 D  # East-Egypt Summertime
+                  # Eastern Europe Summer Time
+                  #     (Africa/Cairo)
+                  #     (Asia/Amman)
+                  #     (Asia/Beirut)
+                  #     (Asia/Damascus)
+                  #     (Asia/Gaza)
+                  #     (Asia/Nicosia)
+                  #     (Europe/Athens)
+                  #     (Europe/Bucharest)
+                  #     (Europe/Chisinau)
+                  #     (Europe/Helsinki)
+                  #     (Europe/Istanbul)
+                  #     (Europe/Kaliningrad)
+                  #     (Europe/Kiev)
+                  #     (Europe/Minsk)
+                  #     (Europe/Riga)
+                  #     (Europe/Simferopol)
+                  #     (Europe/Sofia)
+                  #     (Europe/Tallinn)
+                  #     (Europe/Uzhgorod)
+                  #     (Europe/Vilnius)
+                  #     (Europe/Zaporozhye)
+ MEST     7200 D  # Middle Europe Summer Time (not in zic)
+ MET      3600    # Middle Europe Time (not in zic)
+ METDST   7200 D  # Middle Europe Summer Time (not in zic)
+ MEZ      3600    # Mitteleuropaeische Zeit (German) (not in zic)
+ MSD     14400 D  # Moscow Daylight Time
+                  #     (Europe/Moscow)
+ MSK     10800    # Moscow Time
+                  #     (Europe/Moscow)
+ WET         0    # Western Europe Time
+                  #     (Africa/Casablanca)
+                  #     (Africa/El_Aaiun)
+                  #     (Atlantic/Canary)
+                  #     (Atlantic/Faeroe)
+                  #     (Atlantic/Madeira)
+                  #     (Europe/Lisbon)
+ WETDST   3600 D  # Western Europe Summer Time
+                  #     (Atlantic/Canary)
+                  #     (Atlantic/Faeroe)
+                  #     (Atlantic/Madeira)
+                  #     (Europe/Lisbon)
+ 
+ #################### INDIAN ####################
+ 
+ CXT     25200    # Christmas Island Time (Indian Ocean)
+                  #     (Indian/Christmas)
+ IOT     21600    # British Indian Ocean Territory (Chagos) (there was a timezone change recently in 1996)
+                  #     (Indian/Chagos)
+ MUT     14400    # Mauritius Island Time
+                  #     (Indian/Mauritius)
+ MVT     18000    # Maldives Island Time
+                  #     (Indian/Maldives)
+ RET     14400    # Reunion Time
+                  #     (Indian/Reunion)
+ SCT     14400    # Seychelles Time
+                  #     (Indian/Mahe)
+ TFT     18000    # Kerguelen Time
+                  #     (Indian/Kerguelen)
+ 
+ #################### PACIFIC ####################
+ 
+ CHADT   49500 D  # Chatham Daylight Time (New Zealand)
+                  #     (Pacific/Chatham)
+ CHAST   45900    # Chatham Standard Time (New Zealand)
+                  #     (Pacific/Chatham)
+ CKT     43200    # Cook Islands Time (not in zic)
+ EASST  -18000 D  # Easter Island Summer Time (Chile)
+                  #     (Pacific/Easter)
+ EAST   -21600    # Easter Island Time (Chile)
+                  #     (Pacific/Easter)
+ FJST   -46800 D  # Fiji Summer Time (not in zic)
+ FJT    -43200    # Fiji Time (not in zic)
+ GALT   -21600    # Galapagos Time
+                  #     (Pacific/Galapagos)
+ GAMT   -32400    # Gambier Time
+                  #     (Pacific/Gambier)
+ GILT    43200    # Gilbert Islands Time
+                  #     (Pacific/Tarawa)
+ HST    -36000    # Hawaiian Standard Time
+                  #     (Pacific/Honolulu)
+                  #     (Pacific/Johnston)
+ KOST    39600    # Kosrae Time
+                  #     (Pacific/Kosrae)
+ LINT    50400    # Line Islands Time (Kiribati)
+                  #     (Pacific/Kiritimati)
+ MART   -34200    # Marquesas Time
+                  #     (Pacific/Marquesas)
+ MHT     43200    # Kwajalein Time
+                  #     (Pacific/Kwajalein)
+                  #     (Pacific/Majuro)
+ MPT     36000    # North Mariana Islands Time (not in zic)
+ # CONFLICT! NFT is not unique
+ # Other timezones:
+ #  - NFT: Norfolk Time (Pacific)
+ NFT    -12600    # Newfoundland Time (not in zic)
+ NUT    -39600    # Niue Time
+                  #     (Pacific/Niue)
+ NZDT    46800 D  # New Zealand Daylight Time
+                  #     (Antarctica/McMurdo)
+                  #     (Pacific/Auckland)
+ NZST    43200    # New Zealand Standard Time
+                  #     (Antarctica/McMurdo)
+                  #     (Pacific/Auckland)
+ PGT     36000    # Papua New Guinea Time
+                  #     (Pacific/Port_Moresby)
+ PHOT    46800    # Phoenix Islands Time (Kiribati)
+                  #     (Pacific/Enderbury)
+ PONT    39600    # Ponape Time (Micronesia)
+                  #     (Pacific/Ponape)
+ PWT     32400    # Palau Time
+                  #     (Pacific/Palau)
+ TAHT   -36000    # Tahiti Time (zic says "TAHT", other sources "THAT")
+                  #     (Pacific/Tahiti)
+ TKT    -36000    # Tokelau Time
+                  #     (Pacific/Fakaofo)
+ TOT     46800    # Tonga Time (not in zic)
+ TRUT    36000    # Truk Time (zic says "TRUT", other souces say "TRUK")
+                  #     (Pacific/Truk)
+ TVT     43200    # Tuvalu Time
+                  #     (Pacific/Funafuti)
+ VUT     39600    # Vanuata Time (not in zic)
+ WAKT    43200    # Wake Time
+                  #     (Pacific/Wake)
+ WFT     43200    # Wallis and Futuna Time
+                  #     (Pacific/Wallis)
+ YAPT    36000    # Yap Time (Micronesia) (not in zic)
+ 
diff -cNr cvs/pgsql/src/timezone/tznames/sets/India cvs.build/pgsql/src/timezone/tznames/sets/India
*** cvs/pgsql/src/timezone/tznames/sets/India	1970-01-01 01:00:00.000000000 +0100
--- cvs.build/pgsql/src/timezone/tznames/sets/India	2006-07-13 18:06:01.000000000 +0200
***************
*** 0 ****
--- 1,14 ----
+ # Time zone configuration file for set "India"
+ 
+ # In order to use this file, you need to set
+ #
+ #    timezone_abbreviations = 'India'
+ #
+ # in your postgresql.conf configuration file.
+ 
+ 
+ # include the default set
+ @INCLUDE Default
+ 
+ IST     19800    # Indian Standard Time
+                  #     (Asia/Calcutta)
diff -cNr cvs/pgsql/src/timezone/tznames/sets/README cvs.build/pgsql/src/timezone/tznames/sets/README
*** cvs/pgsql/src/timezone/tznames/sets/README	1970-01-01 01:00:00.000000000 +0100
--- cvs.build/pgsql/src/timezone/tznames/sets/README	2006-07-13 18:06:01.000000000 +0200
***************
*** 0 ****
--- 1,22 ----
+ This directory contains files with timezone sets for PostgreSQL. The problem
+ is that time zone abbreviations are not unique throughout the world and you
+ might find out that a time zone abbreviation in the `Default' set collides
+ with the one you intended to use. All other files except for `Default' are
+ intended to override values from the `Default' set. So you might already have a
+ file here that serves your needs. If not, you can create your own.
+ 
+ In order to use those files, you need to set
+ 
+    timezone_abbreviations = 'xyz'
+ 
+ in your postgresql.conf configuration file, where xyz is the filename that
+ contains the desired time zone names.
+ 
+ 
+ If you think that a set of time zone names for your geographic location is
+ missing here and you find that you have to change more than just the
+ `timezone_abbreviations' parameter in postgresql.conf, please report this to
+ <pgsql-hackers@postgresql.org>. Your set of time zone names can then be
+ included in future releases. For the time being you can always add your own
+ set.
+ 
diff -cNr cvs/pgsql/src/timezone/tznames/templates/Africa.txt cvs.build/pgsql/src/timezone/tznames/templates/Africa.txt
*** cvs/pgsql/src/timezone/tznames/templates/Africa.txt	1970-01-01 01:00:00.000000000 +0100
--- cvs.build/pgsql/src/timezone/tznames/templates/Africa.txt	2006-07-13 18:06:01.000000000 +0200
***************
*** 0 ****
--- 1,176 ----
+ #
+ # NOTE:
+ #   This file is NOT loaded by the PostgreSQL database. It just serves as a
+ #   template for timezones you could need.
+ #
+ #   To add a timezone abbreviation, copy the definition from here to
+ #   ../sets/<YourSetName> and specify
+ #
+ #   timezone_abbreviations = '<YourSetName>'
+ #
+ #   in postgresql.conf. See the existing files in ../sets for information on
+ #   how to include other files and how to override timezone abbreviations from
+ #   the default set.
+ #
+ 
+ CAT      7200    # Central Africa Time
+                  #     (Africa/Blantyre)
+                  #     (Africa/Bujumbura)
+                  #     (Africa/Gaborone)
+                  #     (Africa/Harare)
+                  #     (Africa/Kigali)
+                  #     (Africa/Lubumbashi)
+                  #     (Africa/Lusaka)
+                  #     (Africa/Maputo)
+ CEST     7200 D  # Central Europe Summer Time
+                  #     (Africa/Ceuta)
+                  #     (Europe/Amsterdam)
+                  #     (Europe/Andorra)
+                  #     (Europe/Belgrade)
+                  #     (Europe/Berlin)
+                  #     (Europe/Brussels)
+                  #     (Europe/Budapest)
+                  #     (Europe/Copenhagen)
+                  #     (Europe/Gibraltar)
+                  #     (Europe/Luxembourg)
+                  #     (Europe/Madrid)
+                  #     (Europe/Malta)
+                  #     (Europe/Monaco)
+                  #     (Europe/Oslo)
+                  #     (Europe/Paris)
+                  #     (Europe/Prague)
+                  #     (Europe/Rome)
+                  #     (Europe/Stockholm)
+                  #     (Europe/Tirane)
+                  #     (Europe/Vaduz)
+                  #     (Europe/Vienna)
+                  #     (Europe/Warsaw)
+                  #     (Europe/Zurich)
+ CET      3600    # Central Europe Time
+                  #     (Africa/Algiers)
+                  #     (Africa/Ceuta)
+                  #     (Europe/Amsterdam)
+                  #     (Europe/Andorra)
+                  #     (Europe/Belgrade)
+                  #     (Europe/Berlin)
+                  #     (Europe/Brussels)
+                  #     (Europe/Budapest)
+                  #     (Europe/Copenhagen)
+                  #     (Europe/Gibraltar)
+                  #     (Europe/Luxembourg)
+                  #     (Europe/Madrid)
+                  #     (Europe/Malta)
+                  #     (Europe/Monaco)
+                  #     (Europe/Oslo)
+                  #     (Europe/Paris)
+                  #     (Europe/Prague)
+                  #     (Europe/Rome)
+                  #     (Europe/Stockholm)
+                  #     (Europe/Tirane)
+                  #     (Europe/Vaduz)
+                  #     (Europe/Vienna)
+                  #     (Europe/Warsaw)
+                  #     (Europe/Zurich)
+ EAT     10800    # East Africa Time
+                  #     (Africa/Addis_Ababa)
+                  #     (Africa/Asmera)
+                  #     (Africa/Dar_es_Salaam)
+                  #     (Africa/Djibouti)
+                  #     (Africa/Kampala)
+                  #     (Africa/Khartoum)
+                  #     (Africa/Mogadishu)
+                  #     (Africa/Nairobi)
+                  #     (Indian/Antananarivo)
+                  #     (Indian/Comoro)
+                  #     (Indian/Mayotte)
+ EEST    10800 D  # East-Egypt Summer Time
+                  # Eastern Europe Summer Time
+                  #     (Africa/Cairo)
+                  #     (Asia/Amman)
+                  #     (Asia/Beirut)
+                  #     (Asia/Damascus)
+                  #     (Asia/Gaza)
+                  #     (Asia/Nicosia)
+                  #     (Europe/Athens)
+                  #     (Europe/Bucharest)
+                  #     (Europe/Chisinau)
+                  #     (Europe/Helsinki)
+                  #     (Europe/Istanbul)
+                  #     (Europe/Kaliningrad)
+                  #     (Europe/Kiev)
+                  #     (Europe/Minsk)
+                  #     (Europe/Riga)
+                  #     (Europe/Simferopol)
+                  #     (Europe/Sofia)
+                  #     (Europe/Tallinn)
+                  #     (Europe/Uzhgorod)
+                  #     (Europe/Vilnius)
+                  #     (Europe/Zaporozhye)
+ EET      7200    # East-Egypt Time
+                  # Eastern Europe Time
+                  #     (Africa/Cairo)
+                  #     (Africa/Tripoli)
+                  #     (Asia/Amman)
+                  #     (Asia/Beirut)
+                  #     (Asia/Damascus)
+                  #     (Asia/Gaza)
+                  #     (Asia/Nicosia)
+                  #     (Europe/Athens)
+                  #     (Europe/Bucharest)
+                  #     (Europe/Chisinau)
+                  #     (Europe/Helsinki)
+                  #     (Europe/Istanbul)
+                  #     (Europe/Kaliningrad)
+                  #     (Europe/Kiev)
+                  #     (Europe/Minsk)
+                  #     (Europe/Riga)
+                  #     (Europe/Simferopol)
+                  #     (Europe/Sofia)
+                  #     (Europe/Tallinn)
+                  #     (Europe/Uzhgorod)
+                  #     (Europe/Vilnius)
+                  #     (Europe/Zaporozhye)
+ GMT         0    # Greenwich Mean Time
+                  #     (Africa/Abidjan)
+                  #     (Africa/Bamako)
+                  #     (Africa/Banjul)
+                  #     (Africa/Bissau)
+                  #     (Africa/Conakry)
+                  #     (Africa/Dakar)
+                  #     (Africa/Lome)
+                  #     (Africa/Monrovia)
+                  #     (Africa/Nouakchott)
+                  #     (Africa/Ouagadougou)
+                  #     (Africa/Sao_Tome)
+                  #     (America/Danmarkshavn)
+                  #     (Atlantic/Reykjavik)
+                  #     (Atlantic/St_Helena)
+                  #     (Etc/GMT)
+                  #     (Europe/Dublin)
+                  #     (Europe/London)
+ SAST     7200    # South Africa Standard Time
+                  # Australian South Standard Time
+                  #     (Africa/Maseru)
+                  #     (Africa/Mbabane)
+ WAST     7200 D  # West Africa Summer Time
+                  #     (Africa/Windhoek)
+ WAT      3600    # West Africa Time
+                  #     (Africa/Bangui)
+                  #     (Africa/Brazzaville)
+                  #     (Africa/Douala)
+                  #     (Africa/Kinshasa)
+                  #     (Africa/Lagos)
+                  #     (Africa/Libreville)
+                  #     (Africa/Luanda)
+                  #     (Africa/Malabo)
+                  #     (Africa/Ndjamena)
+                  #     (Africa/Niamey)
+                  #     (Africa/Porto-Novo)
+                  #     (Africa/Windhoek)
+ WET         0    # Western Europe Time
+                  #     (Africa/Casablanca)
+                  #     (Africa/El_Aaiun)
+                  #     (Atlantic/Canary)
+                  #     (Atlantic/Faeroe)
+                  #     (Atlantic/Madeira)
+                  #     (Europe/Lisbon)
diff -cNr cvs/pgsql/src/timezone/tznames/templates/America.txt cvs.build/pgsql/src/timezone/tznames/templates/America.txt
*** cvs/pgsql/src/timezone/tznames/templates/America.txt	1970-01-01 01:00:00.000000000 +0100
--- cvs.build/pgsql/src/timezone/tznames/templates/America.txt	2006-07-13 18:06:01.000000000 +0200
***************
*** 0 ****
--- 1,299 ----
+ #
+ # NOTE:
+ #   This file is NOT loaded by the PostgreSQL database. It just serves as a
+ #   template for timezones you could need.
+ #
+ #   To add a timezone abbreviation, copy the definition from here to
+ #   ../sets/<YourSetName> and specify
+ #
+ #   timezone_abbreviations = '<YourSetName>'
+ #
+ #   in postgresql.conf. See the existing files in ../sets for information on
+ #   how to include other files and how to override timezone abbreviations from
+ #   the default set.
+ #
+ 
+ # Acre time is sometimes called Acre Standard Time (AST) which leads to a
+ # conflict with AST (see below at AST)
+ ACT    -18000    # Acre Time
+                  #     (America/Eirunepe)
+                  #     (America/Rio_Branco)
+ # CONFLICT! ACST is not unique
+ # Other timezones:
+ #  - ACST: Central Australia Standard Time (Australia)
+ ACST   -14400 D  # Acre Summer Time (not in zic)
+                  #     (America/Eirunepe)
+                  #     (America/Rio_Branco)
+ # CONFLICT! ADT is not unique
+ # Other timezones:
+ #  - ADT: Arabic Daylight Time (Asia)
+ ADT    -10800 D  # Atlantic Daylight Time
+                  #     (America/Glace_Bay)
+                  #     (America/Goose_Bay)
+                  #     (America/Halifax)
+                  #     (America/Thule)
+                  #     (Atlantic/Bermuda)
+ AKDT   -28800 D  # Alaska Daylight Time
+                  #     (America/Anchorage)
+                  #     (America/Juneau)
+                  #     (America/Nome)
+                  #     (America/Yakutat)
+ AKST   -32400    # Alaska Standard Time
+                  #     (America/Anchorage)
+                  #     (America/Juneau)
+                  #     (America/Nome)
+                  #     (America/Yakutat)
+ # CONFLICT! AMST is not unique
+ # Other timezones:
+ #  - AMST: Armenia Summer Time (Asia)
+ AMST   -10800 D  # Amazon Summer Time
+                  #     (America/Campo_Grande)
+                  #     (America/Cuiaba)
+ # CONFLICT! AMT is not unique
+ # Other timezones:
+ #  - AMT: Armenia Time (Asia)
+ AMT    -14400    # Amazon Time
+                  #     (America/Boa_Vista)
+                  #     (America/Campo_Grande)
+                  #     (America/Cuiaba)
+                  #     (America/Manaus)
+                  #     (America/Porto_Velho)
+ ART    -10800    # Argentina Time (not in zic)
+ # CONFLICT! AST is not unique
+ # Other timezones:
+ #  - AST: Arabic Standard Time (Asia)
+ #  - AST: Al Manamah Standard Time (Asia) same offset as Arabia Standard Time
+ #  - AST/ACT: Acre Standard Time (America) listed as ACT
+ #  - AST: Anguilla Standard Time (America) same offset
+ #  - AST: Antigua Standard Time (America) same offset
+ #  - AST: Antilles Standard Time (America) same offset
+ AST    -14400    # Atlantic Standard Time
+                  #     (America/Anguilla)
+                  #     (America/Antigua)
+                  #     (America/Aruba)
+                  #     (America/Curacao)
+                  #     (America/Dominica)
+                  #     (America/Glace_Bay)
+                  #     (America/Goose_Bay)
+                  #     (America/Grenada)
+                  #     (America/Guadeloupe)
+                  #     (America/Halifax)
+                  #     (America/Martinique)
+                  #     (America/Montserrat)
+                  #     (America/Port_of_Spain)
+                  #     (America/Puerto_Rico)
+                  #     (America/Santo_Domingo)
+                  #     (America/St_Kitts)
+                  #     (America/St_Lucia)
+                  #     (America/St_Thomas)
+                  #     (America/St_Vincent)
+                  #     (America/Thule)
+                  #     (America/Tortola)
+                  #     (Atlantic/Bermuda)
+ BOT    -14400    # Bolivia Time
+                  #     (America/La_Paz)
+ BRA    -10800    # Brazil Time (not in zic)
+ BRST    -7200 D  # Brasil Summer Time
+                  #     (America/Sao_Paulo)
+ BRT    -10800    # Brasil Time
+                  #     (America/Araguaina)
+                  #     (America/Bahia)
+                  #     (America/Belem)
+                  #     (America/Fortaleza)
+                  #     (America/Maceio)
+                  #     (America/Recife)
+                  #     (America/Sao_Paulo)
+ # CONFLICT! CDT is not unique
+ # Other timezones:
+ #  - CDT: Central Daylight Time (America)
+ #  - CDT: Mexico Central Daylight Time (America)
+ #  - CDT: Canada Central Daylight Time (America)
+ CDT    -14400 D  # Cuba Central Daylight Time
+                  #     (America/Havana)
+ # CONFLICT! CDT is not unique
+ # Other timezones:
+ #  - CDT: Mexico Central Daylight Time (America)
+ #  - CDT: Cuba Central Daylight Time (America)
+ #  - CDT: Canada Central Daylight Time (America)
+ CDT    -18000 D  # Central Daylight Time
+                  #     (America/Cancun)
+                  #     (America/Chicago)
+                  #     (America/Menominee)
+                  #     (America/Merida)
+                  #     (America/Mexico_City)
+                  #     (America/Monterrey)
+                  #     (America/North_Dakota/Center)
+                  #     (America/Rainy_River)
+                  #     (America/Rankin_Inlet)
+                  #     (America/Winnipeg)
+ CLST   -10800 D  # Chile Summer Time
+                  #     (America/Santiago)
+                  #     (Antarctica/Palmer)
+ CLT    -14400    # Chile Time
+                  #     (America/Santiago)
+                  #     (Antarctica/Palmer)
+ COT    -18000    # Columbia Time (not in zic)
+ # CONFLICT! CST is not unique
+ # Other timezones:
+ #  - CST: Central Standard Time (Australia)
+ #  - CST: Central Standard Time (America)
+ CST    -18000    # Cuba Central Standard Time (America)
+                  #     (America/Havana)
+ # CONFLICT! CST is not unique
+ # Other timezones:
+ #  - CST: Central Standard Time (Australia)
+ #  - CST: Cuba Central Standard Time (America)
+ CST    -21600    # Central Standard Time (America)
+                  #     (America/Cancun)
+                  #     (America/Chicago)
+                  #     (America/Menominee)
+                  #     (America/Merida)
+                  #     (America/Mexico_City)
+                  #     (America/Monterrey)
+                  #     (America/North_Dakota/Center)
+                  #     (America/Rainy_River)
+                  #     (America/Rankin_Inlet)
+                  #     (America/Regina)
+                  #     (America/Swift_Current)
+                  #     (America/Winnipeg)
+ ECT    -18000    # Ecuador Time
+                  # Eastern Caribbean Time
+                  #     (America/Guayaquil)
+ EDT    -14400 D  # Eastern Daylight Saving Time
+                  #     (America/Detroit)
+                  #     (America/Grand_Turk)
+                  #     (America/Indiana/Indianapolis)
+                  #     (America/Indiana/Knox)
+                  #     (America/Indiana/Marengo)
+                  #     (America/Indiana/Vevay)
+                  #     (America/Iqaluit)
+                  #     (America/Kentucky/Louisville)
+                  #     (America/Kentucky/Monticello)
+                  #     (America/Montreal)
+                  #     (America/Nassau)
+                  #     (America/New_York)
+                  #     (America/Nipigon)
+                  #     (America/Pangnirtung)
+                  #     (America/Thunder_Bay)
+                  #     (America/Toronto)
+ EGST        0 D  # East Greenland Summer Time
+                  #     (America/Scoresbysund)
+ EGT     -3600    # East Greenland Time (Svalbard & Jan Mayen)
+                  #     (America/Scoresbysund)
+ # CONFLICT! EST is not unique
+ # Other timezones:
+ #  - EST: Eastern Standard Time (Australia)
+ EST    -18000    # Eastern Standard Time (America)
+                  #     (America/Cayman)
+                  #     (America/Coral_Harbour)
+                  #     (America/Detroit)
+                  #     (America/Grand_Turk)
+                  #     (America/Indiana/Indianapolis)
+                  #     (America/Indiana/Knox)
+                  #     (America/Indiana/Marengo)
+                  #     (America/Indiana/Vevay)
+                  #     (America/Iqaluit)
+                  #     (America/Jamaica)
+                  #     (America/Kentucky/Louisville)
+                  #     (America/Kentucky/Monticello)
+                  #     (America/Montreal)
+                  #     (America/Nassau)
+                  #     (America/New_York)
+                  #     (America/Nipigon)
+                  #     (America/Panama)
+                  #     (America/Pangnirtung)
+                  #     (America/Thunder_Bay)
+                  #     (America/Toronto)
+ FNT     -7200    # Fernando de Noronha Time
+                  #     (America/Noronha)
+ FNST    -3600 D  # Fernando de Noronha Summer Time (not in zic)
+                  #     (America/Noronha)
+ GFT    -10800    # French Guiana Time
+                  #     (America/Cayenne)
+ GMT         0    # Greenwich Mean Time
+                  #     (Africa/Abidjan)
+                  #     (Africa/Bamako)
+                  #     (Africa/Banjul)
+                  #     (Africa/Bissau)
+                  #     (Africa/Conakry)
+                  #     (Africa/Dakar)
+                  #     (Africa/Lome)
+                  #     (Africa/Monrovia)
+                  #     (Africa/Nouakchott)
+                  #     (Africa/Ouagadougou)
+                  #     (Africa/Sao_Tome)
+                  #     (America/Danmarkshavn)
+                  #     (Atlantic/Reykjavik)
+                  #     (Atlantic/St_Helena)
+                  #     (Etc/GMT)
+                  #     (Europe/Dublin)
+                  #     (Europe/London)
+ GYT    -14400    # Guyana Time
+                  #     (America/Guyana)
+ HADT   -32400 D  # Hawaii-Aleutain Daylight Time
+                  #     (America/Adak)
+ HAST   -36000    # Hawaii-Aleutain Standard Time
+                  #     (America/Adak)
+ MDT    -21600 D  # Mexico Mountain Daylight Time
+                  # Mountain Daylight Time
+                  #     (America/Boise)
+                  #     (America/Cambridge_Bay)
+                  #     (America/Chihuahua)
+                  #     (America/Denver)
+                  #     (America/Edmonton)
+                  #     (America/Inuvik)
+                  #     (America/Mazatlan)
+                  #     (America/Yellowknife)
+ MST    -25200    # Mexico Mountain Standard Time
+                  # Mountain Standard Time
+                  #     (America/Boise)
+                  #     (America/Cambridge_Bay)
+                  #     (America/Chihuahua)
+                  #     (America/Dawson_Creek)
+                  #     (America/Denver)
+                  #     (America/Edmonton)
+                  #     (America/Hermosillo)
+                  #     (America/Inuvik)
+                  #     (America/Mazatlan)
+                  #     (America/Phoenix)
+                  #     (America/Yellowknife)
+ NDT     -9000 D  # Newfoundland Daylight Time
+                  #     (America/St_Johns)
+ # CONFLICT! NFT is not unique
+ # Other timezones:
+ #  - NFT: Norfolk Time (Pacific)
+ NFT    -12600    # Newfoundland Time (not in zic)
+ NST    -12600    # Newfoundland Standard Time
+                  #     (America/St_Johns)
+ PDT    -25200 D  # Pacific Daylight Time
+                  #     (America/Dawson)
+                  #     (America/Los_Angeles)
+                  #     (America/Tijuana)
+                  #     (America/Vancouver)
+                  #     (America/Whitehorse)
+ PET    -18000    # Peru Time (not in zic)
+ PMDT    -7200 D  # Pierre & Miquelon Daylight Time
+                  #     (America/Miquelon)
+ PMST   -10800    # Pierre & Miquelon Standard Time
+                  #     (America/Miquelon)
+ PST    -28800    # Pacific Standard Time
+                  #     (America/Dawson)
+                  #     (America/Los_Angeles)
+                  #     (America/Tijuana)
+                  #     (America/Vancouver)
+                  #     (America/Whitehorse)
+                  #     (Pacific/Pitcairn)
+ PYST   -10800 D  # Paraguay Summer Time
+                  #     (America/Asuncion)
+ PYT    -14400    # Paraguay Time
+                  #     (America/Asuncion)
+ SRT    -10800    # Suriname Time
+                  #     (America/Paramaribo)
+ UYST    -7200 D  # Uruguay Summer Time (not in zic)
+ UYT    -10800    # Uruguay Time (not in zic)
+ VET    -14400    # Venezuela Time
+                  #     (America/Caracas)
+ WGST    -7200 D  # Western Greenland Summer Time
+                  #     (America/Godthab)
+ WGT    -10800    # West Greenland Time
+                  #     (America/Godthab)
diff -cNr cvs/pgsql/src/timezone/tznames/templates/Antarctica.txt cvs.build/pgsql/src/timezone/tznames/templates/Antarctica.txt
*** cvs/pgsql/src/timezone/tznames/templates/Antarctica.txt	1970-01-01 01:00:00.000000000 +0100
--- cvs.build/pgsql/src/timezone/tznames/templates/Antarctica.txt	2006-07-13 18:06:01.000000000 +0200
***************
*** 0 ****
--- 1,45 ----
+ #
+ # NOTE:
+ #   This file is NOT loaded by the PostgreSQL database. It just serves as a
+ #   template for timezones you could need.
+ #
+ #   To add a timezone abbreviation, copy the definition from here to
+ #   ../sets/<YourSetName> and specify
+ #
+ #   timezone_abbreviations = '<YourSetName>'
+ #
+ #   in postgresql.conf. See the existing files in ../sets for information on
+ #   how to include other files and how to override timezone abbreviations from
+ #   the default set.
+ #
+ 
+ CLST   -10800 D  # Chile Summer Time
+                  #     (America/Santiago)
+                  #     (Antarctica/Palmer)
+ CLT    -14400    # Chile Time
+                  #     (America/Santiago)
+                  #     (Antarctica/Palmer)
+ DAVT    25200    # Davis Time (Antarctica)
+                  #     (Antarctica/Davis)
+ DDUT    36000    # Dumont-d`Urville Time (Antarctica)
+                  #     (Antarctica/DumontDUrville)
+ MAWT    21600    # Mawson Time (Antarctica)
+                  #     (Antarctica/Mawson)
+ NZDT    46800 D  # New Zealand Daylight Time
+                  #     (Antarctica/McMurdo)
+                  #     (Pacific/Auckland)
+ NZST    43200    # New Zealand Standard Time
+                  #     (Antarctica/McMurdo)
+                  #     (Pacific/Auckland)
+ ROTT   -10800    # Rothera Time
+                  #     (Antarctica/Rothera)
+ SYOT    10800    # Syowa Time
+                  #     (Antarctica/Syowa)
+ VOST    21600    # Vostok time
+                  #     (Antarctica/Vostok)
+ # CONFLICT! WST is not unique
+ # Other timezones:
+ #  - WST: West Samoa Time
+ WST     28800    # Western Standard Time (Australia)
+                  #     (Antarctica/Casey)
+                  #     (Australia/Perth)
diff -cNr cvs/pgsql/src/timezone/tznames/templates/Asia.txt cvs.build/pgsql/src/timezone/tznames/templates/Asia.txt
*** cvs/pgsql/src/timezone/tznames/templates/Asia.txt	1970-01-01 01:00:00.000000000 +0100
--- cvs.build/pgsql/src/timezone/tznames/templates/Asia.txt	2006-07-13 18:06:01.000000000 +0200
***************
*** 0 ****
--- 1,244 ----
+ #
+ # NOTE:
+ #   This file is NOT loaded by the PostgreSQL database. It just serves as a
+ #   template for timezones you could need.
+ #
+ #   To add a timezone abbreviation, copy the definition from here to
+ #   ../sets/<YourSetName> and specify
+ #
+ #   timezone_abbreviations = '<YourSetName>'
+ #
+ #   in postgresql.conf. See the existing files in ../sets for information on
+ #   how to include other files and how to override timezone abbreviations from
+ #   the default set.
+ #
+ 
+ # CONFLICT! ADT is not unique
+ # Other timezones:
+ # - ADT: Atlantic Daylight Time (America)
+ ADT     14400 D  # Arabia Daylight Time
+                  #     (Asia/Baghdad)
+ AFT     16200    # Afghanistan Time
+                  #     (Asia/Kabul)
+ ALMST   25200 D  # Alma-Ata Summer Time
+                  #     (Asia/Almaty)
+ ALMT    21600    # Alma-Ata Time
+                  #     (Asia/Almaty)
+ # CONFLICT! AMST is not unique
+ # Other timezones:
+ #  - AMST: Amazon Summer Time (America)
+ AMST    18000 D  # Armenia Summer Time
+                  #     (Asia/Yerevan)
+ # CONFLICT! AMT is not unique
+ # Other timezones:
+ #  - AMT: Amazon Time (America)
+ AMT     14400    # Armenia Time
+                  #     (Asia/Yerevan)
+ ANAST   46800 D  # Anadyr Summer Time
+                  #     (Asia/Anadyr)
+ ANAT    43200    # Anadyr Time
+                  #     (Asia/Anadyr)
+ AQTT    18000    # Aqtau Time
+                  # Aqtobe Time
+                  #     (Asia/Aqtau)
+                  #     (Asia/Aqtobe)
+ # CONFLICT! AST is not unique
+ # Other timezones:
+ #  - AST: Atlantic Standard Time (America)
+ #  - AST/ACT: Acre Standard Time (America) listed as ACT
+ #  - AST: Anguilla Standard Time (America) same offset as Atlantic Standard Time
+ #  - AST: Antigua Standard Time (America) same offset as Atlantic Standard Time
+ #  - AST: Antilles Standard Time (America) same offset as Atlantic Standard Time
+ #  - AST: Al Manamah Standard Time (Asia) same offset as Arabia Standard Time
+ AST     10800    # Arabia Standard Time
+                  #     (Asia/Aden)
+                  #     (Asia/Baghdad)
+                  #     (Asia/Bahrain)
+                  #     (Asia/Kuwait)
+                  #     (Asia/Qatar)
+                  #     (Asia/Riyadh)
+ AZST    18000 D  # Azerbaijan Summer Time
+                  #     (Asia/Baku)
+ AZT     14400    # Azerbaijan Time
+                  #     (Asia/Baku)
+ BDT     21600    # Bangladesh Time
+                  #     (Asia/Dhaka)
+ BNT     28800    # Brunei Darussalam Time
+                  #     (Asia/Brunei)
+ BORT    28800    # Borneo Time (Indonesia) (not in zic)
+ BTT     21600    # Bhutan Time
+                  #     (Asia/Thimphu)
+ CCT     28800    # China Coastal Time (not in zic)
+ CHOST   36000 D  # Choibalsan Summer Time
+                  #     (Asia/Choibalsan)
+ CHOT    32400    # Choibalsan Time
+                  #     (Asia/Choibalsan)
+ CIT     28800    # Central Indonesia Time
+                  #     (Asia/Makassar)
+ EEST    10800 D  # East-Egypt Summer Time
+                  # Eastern Europe Summer Time
+                  #     (Africa/Cairo)
+                  #     (Asia/Amman)
+                  #     (Asia/Beirut)
+                  #     (Asia/Damascus)
+                  #     (Asia/Gaza)
+                  #     (Asia/Nicosia)
+                  #     (Europe/Athens)
+                  #     (Europe/Bucharest)
+                  #     (Europe/Chisinau)
+                  #     (Europe/Helsinki)
+                  #     (Europe/Istanbul)
+                  #     (Europe/Kaliningrad)
+                  #     (Europe/Kiev)
+                  #     (Europe/Minsk)
+                  #     (Europe/Riga)
+                  #     (Europe/Simferopol)
+                  #     (Europe/Sofia)
+                  #     (Europe/Tallinn)
+                  #     (Europe/Uzhgorod)
+                  #     (Europe/Vilnius)
+                  #     (Europe/Zaporozhye)
+ EET      7200    # East-Egypt Time
+                  # Eastern Europe Time
+                  #     (Africa/Cairo)
+                  #     (Africa/Tripoli)
+                  #     (Asia/Amman)
+                  #     (Asia/Beirut)
+                  #     (Asia/Damascus)
+                  #     (Asia/Gaza)
+                  #     (Asia/Nicosia)
+                  #     (Europe/Athens)
+                  #     (Europe/Bucharest)
+                  #     (Europe/Chisinau)
+                  #     (Europe/Helsinki)
+                  #     (Europe/Istanbul)
+                  #     (Europe/Kaliningrad)
+                  #     (Europe/Kiev)
+                  #     (Europe/Minsk)
+                  #     (Europe/Riga)
+                  #     (Europe/Simferopol)
+                  #     (Europe/Sofia)
+                  #     (Europe/Tallinn)
+                  #     (Europe/Uzhgorod)
+                  #     (Europe/Vilnius)
+                  #     (Europe/Zaporozhye)
+ EIT     32400    # East Indonesia Time
+                  #     (Asia/Jayapura)
+ GEST    14400 D  # Georgia Summer Time (there was a timezone change in 2004)
+                  #     (Asia/Tbilisi)
+ GET     10800    # Georgia Time (there was a timezone change in 2004)
+                  #     (Asia/Tbilisi)
+ # CONFLICT! GST is not unique
+ # Other timezones:
+ # - GST: South Georgia Time (Atlantic)
+ GST     14400    # Gulf Standard Time
+                  #     (Asia/Dubai)
+                  #     (Asia/Muscat)
+ HKT     28800    # Hong Kong Time (not in zic)
+ HOVST   28800 D  # Hovd Summer Time
+                  #     (Asia/Hovd)
+ HOVT    25200    # Hovd Time
+                  #     (Asia/Hovd)
+ ICT     25200    # Indochina Time
+                  #     (Asia/Bangkok)
+                  #     (Asia/Phnom_Penh)
+                  #     (Asia/Saigon)
+                  #     (Asia/Vientiane)
+ IRKST   32400 D  # Irkutsk Summer Time
+                  #     (Asia/Irkutsk)
+ IRKT    28800    # Irkutsk Time
+                  #     (Asia/Irkutsk)
+ IRT     12600    # Iran Time (not in zic)
+ # CONFLICT! IST is not unique
+ # Other timezones:
+ # - IST: Irish Summer Time (Europe)
+ # - IST: Israel Standard Time (Asia)
+ IST     19800    # Indian Standard Time
+                  #     (Asia/Calcutta)
+ # CONFLICT! IST is not unique
+ # Other timezones:
+ # - IST: Irish Summer Time (Europe)
+ # - IST: Indian Standard Time (Asia)
+ IST      7200    # Israel Standard Time
+                  #     (this time zone is not contained in the ZIC database)
+ JAYT    32400    # Jayapura Time (Indonesia) (not in zic)
+ KDT     36000 D  # Korean Daylight Time (not in zic)
+ KGST    21600 D  # Kyrgyzstan Summer Time
+                  #     (Asia/Bishkek)
+ KGT     18000    # Kyrgyzstan Time
+                  #     (Asia/Bishkek)
+ KRAST   28800 D  # Krasnoyarsk Summer Time
+                  #     (Asia/Krasnoyarsk)
+ KRAT    25200    # Krasnoyarsk Time
+                  #     (Asia/Krasnoyarsk)
+ KST     32400    # Korean Standard Time
+                  #     (Asia/Pyongyang)
+ LKT     21600    # Lanka Time
+                  #     (Asia/Colombo)
+ MAGST   43200 D  # Magadan Summer Time
+                  #     (Asia/Magadan)
+ MAGT    39600    # Magadan Time
+                  #     (Asia/Magadan)
+ MMT     23400    # Myanmar Time
+                  #     (Asia/Rangoon)
+ MYT     28800    # Malaysia Time
+                  #     (Asia/Kuala_Lumpur)
+                  #     (Asia/Kuching)
+ NOVST   25200 D  # Novosibirsk Summer Time
+                  #     (Asia/Novosibirsk)
+ NOVT    21600    # Novosibirsk Time
+                  #     (Asia/Novosibirsk)
+ NPT     20700    # Nepal Time
+                  #     (Asia/Katmandu)
+ OMSST   25200 D  # Omsk Summer Time
+                  #     (Asia/Omsk)
+ OMST    21600    # Omsk Time
+                  #     (Asia/Omsk)
+ ORAT    18000    # Oral Time
+                  #     (Asia/Oral)
+ PETST   46800 D  # Petropavlovsk-Kamchatski Summer Time
+                  #     (Asia/Kamchatka)
+ PETT    43200    # Petropavlovsk-Kamchatski Time
+                  #     (Asia/Kamchatka)
+ PHT     28800    # Phillipine Time (not in zic)
+ PKT     18000    # Pakistan Time (not in zic)
+ QYZT    21600    # Kizilorda Time
+                  #     (Asia/Qyzylorda)
+ SAKST   39600 D  # Sakhalin Summer Time
+                  #     (Asia/Sakhalin)
+ SAKT    36000    # Sakhalin Time
+                  #     (Asia/Sakhalin)
+ SGT     28800    # Singapore Time
+                  #     (Asia/Singapore)
+ TJT     18000    # Tajikistan Time
+                  #     (Asia/Dushanbe)
+ TLT     32400    # East Timor Time
+                  #     (Asia/Dili)
+ TMT     18000    # Turkmenistan Time
+                  #     (Asia/Ashgabat)
+ ULAST   32400 D  # Ulan Bator Summer Time
+                  #     (Asia/Ulaanbaatar)
+ ULAT    28800    # Ulan Bator Time
+                  #     (Asia/Ulaanbaatar)
+ UZST    21600 D  # Uzbekistan Summer Time
+                  #     (Asia/Samarkand)
+                  #     (Asia/Tashkent)
+ UZT     18000    # Uzbekistan Time
+                  #     (Asia/Samarkand)
+                  #     (Asia/Tashkent)
+ VLAST   39600 D  # Vladivostok Summer Time
+                  #     (Asia/Vladivostok)
+ VLAT    36000    # Vladivostok Time
+                  #     (Asia/Vladivostok)
+ WIT     25200    # Waktu Indonesia Timur
+                  # West Indonesia Time
+                  #     (Asia/Jakarta)
+                  #     (Asia/Pontianak)
+ YAKST   36000 D  # Yakutsk Summer Time
+                  #     (Asia/Yakutsk)
+ YAKT    32400    # Yakutsk Time
+                  #     (Asia/Yakutsk)
+ YEKST   21600 D  # Yekaterinburg Summer Time
+                  #     (Asia/Yekaterinburg)
+ YEKT    18000    # Yekaterinburg Time
+                  #     (Asia/Yekaterinburg)
diff -cNr cvs/pgsql/src/timezone/tznames/templates/Atlantic.txt cvs.build/pgsql/src/timezone/tznames/templates/Atlantic.txt
*** cvs/pgsql/src/timezone/tznames/templates/Atlantic.txt	1970-01-01 01:00:00.000000000 +0100
--- cvs.build/pgsql/src/timezone/tznames/templates/Atlantic.txt	2006-07-13 18:06:01.000000000 +0200
***************
*** 0 ****
--- 1,100 ----
+ #
+ # NOTE:
+ #   This file is NOT loaded by the PostgreSQL database. It just serves as a
+ #   template for timezones you could need.
+ #
+ #   To add a timezone abbreviation, copy the definition from here to
+ #   ../sets/<YourSetName> and specify
+ #
+ #   timezone_abbreviations = '<YourSetName>'
+ #
+ #   in postgresql.conf. See the existing files in ../sets for information on
+ #   how to include other files and how to override timezone abbreviations from
+ #   the default set.
+ #
+ 
+ # CONFLICT! ADT is not unique
+ # Other timezones:
+ #  - ADT: Arabic Daylight Time (Asia)
+ ADT    -10800 D  # Atlantic Daylight Time
+                  #     (America/Glace_Bay)
+                  #     (America/Goose_Bay)
+                  #     (America/Halifax)
+                  #     (America/Thule)
+                  #     (Atlantic/Bermuda)
+ # CONFLICT! AST is not unique
+ # Other timezones:
+ #  - AST: Arabic Standard Time (Asia)
+ #  - AST: Al Manamah Standard Time (Asia) same offset as Arabia Standard Time
+ #  - AST/ACT: Acre Standard Time (America) listed as ACT
+ #  - AST: Anguilla Standard Time (America) same offset
+ #  - AST: Antigua Standard Time (America) same offset
+ #  - AST: Antilles Standard Time (America) same offset
+ AST    -14400    # Atlantic Standard Time
+                  #     (America/Anguilla)
+                  #     (America/Antigua)
+                  #     (America/Aruba)
+                  #     (America/Curacao)
+                  #     (America/Dominica)
+                  #     (America/Glace_Bay)
+                  #     (America/Goose_Bay)
+                  #     (America/Grenada)
+                  #     (America/Guadeloupe)
+                  #     (America/Halifax)
+                  #     (America/Martinique)
+                  #     (America/Montserrat)
+                  #     (America/Port_of_Spain)
+                  #     (America/Puerto_Rico)
+                  #     (America/Santo_Domingo)
+                  #     (America/St_Kitts)
+                  #     (America/St_Lucia)
+                  #     (America/St_Thomas)
+                  #     (America/St_Vincent)
+                  #     (America/Thule)
+                  #     (America/Tortola)
+                  #     (Atlantic/Bermuda)
+ AZOST       0 D  # Azores Summer Time
+                  #     (Atlantic/Azores)
+ AZOT    -3600    # Azores Time
+                  #     (Atlantic/Azores)
+ CVT     -3600    # Cape Verde Time
+                  #     (Atlantic/Cape_Verde)
+ FKST   -10800 D  # Falkland Islands Summer Time
+                  #     (Atlantic/Stanley)
+ FKT    -14400    # Falkland Islands Time
+                  #     (Atlantic/Stanley)
+ GMT         0    # Greenwich Mean Time
+                  #     (Africa/Abidjan)
+                  #     (Africa/Bamako)
+                  #     (Africa/Banjul)
+                  #     (Africa/Bissau)
+                  #     (Africa/Conakry)
+                  #     (Africa/Dakar)
+                  #     (Africa/Lome)
+                  #     (Africa/Monrovia)
+                  #     (Africa/Nouakchott)
+                  #     (Africa/Ouagadougou)
+                  #     (Africa/Sao_Tome)
+                  #     (America/Danmarkshavn)
+                  #     (Atlantic/Reykjavik)
+                  #     (Atlantic/St_Helena)
+                  #     (Etc/GMT)
+                  #     (Europe/Dublin)
+                  #     (Europe/London)
+ # CONFLICT! GST is not unique
+ # Other timezones:
+ # - GST: Gulf Standard Time (Asia)
+ GST     -7200    # South Georgia Time (Atlantic)
+                  #     (Atlantic/South_Georgia)
+ WEST     3600 D  # Western Europe Summer Time
+                  #     (Atlantic/Canary)
+                  #     (Atlantic/Faeroe)
+                  #     (Atlantic/Madeira)
+                  #     (Europe/Lisbon)
+ WET         0    # Western Europe Time
+                  #     (Africa/Casablanca)
+                  #     (Africa/El_Aaiun)
+                  #     (Atlantic/Canary)
+                  #     (Atlantic/Faeroe)
+                  #     (Atlantic/Madeira)
+                  #     (Europe/Lisbon)
diff -cNr cvs/pgsql/src/timezone/tznames/templates/Australia.txt cvs.build/pgsql/src/timezone/tznames/templates/Australia.txt
*** cvs/pgsql/src/timezone/tznames/templates/Australia.txt	1970-01-01 01:00:00.000000000 +0100
--- cvs.build/pgsql/src/timezone/tznames/templates/Australia.txt	2006-07-13 18:06:01.000000000 +0200
***************
*** 0 ****
--- 1,67 ----
+ #
+ # NOTE:
+ #   This file is NOT loaded by the PostgreSQL database. It just serves as a
+ #   template for timezones you could need.
+ #
+ #   To add a timezone abbreviation, copy the definition from here to
+ #   ../sets/<YourSetName> and specify
+ #
+ #   timezone_abbreviations = '<YourSetName>'
+ #
+ #   in postgresql.conf. See the existing files in ../sets for information on
+ #   how to include other files and how to override timezone abbreviations from
+ #   the default set.
+ #
+ 
+ ACSST   37800 D  # Central Australia (not in zic)
+ # CONFLICT! ACST is not unique
+ # Other timezones:
+ #  - ACST: Acre Summer Time (America)
+ ACST    34200    # Central Australia Standard Time (not in zic)
+ AESST   39600 D  # Australia Eastern Summer Standard Time (not in zic)
+ AEST    36000    # Australia Eastern Standard Time (not in zic)
+ AWSST   32400 D  # Australia Western Summer Standard Time (not in zic)
+ AWST    28800    # Australia Western Standard Time (not in zic)
+ CADT    37800 D  # Central Australia Daylight-Saving Time (not in zic)
+ CAST    34200    # Central Australia Standard Time (not in zic)
+ # CONFLICT! CST is not unique
+ # Other timezones:
+ #  - CST: Central Standard Time (America)
+ #  - CST: Cuba Central Standard Time (America)
+ CST     34200    # Central Standard Time (Australia)
+                  #     (Australia/Adelaide)
+                  #     (Australia/Broken_Hill)
+ # CONFLICT! EAST is not unique
+ # Other timezones:
+ #  - EAST: Easter Island Time (Chile) (Pacific)
+ EAST    36000    # East Australian Standard Time (not in zic)
+ # CONFLICT! EST is not unique
+ # Other timezones:
+ #  - EST: Eastern Standard Time (America)
+ EST     36000    # Eastern Standard Time (Australia)
+                  #     (Australia/Currie)
+                  #     (Australia/Hobart)
+                  #     (Australia/Melbourne)
+                  #     (Australia/Sydney)
+                  #     (Australia/Currie)
+                  #     (Australia/Hobart)
+                  #     (Australia/Melbourne)
+                  #     (Australia/Sydney)
+ LHDT    39600 D  # Lord Howe Daylight Time, Australia (not in zic)
+ LHST    37800    # Lord Howe Standard Time (Australia)
+                  #     (Australia/Lord_Howe)
+ LIGT    36000    # Melbourne, Australia (not in zic)
+ NZT     43200    # New Zealand Time (not in zic)
+ SADT    37800 D  # South Australian Daylight-Saving Time (not in zic)
+ SAST    34200    # South Australian Standard Time (not in zic)
+ SAT     34200    # South Australian Standard Time (not in zic)
+ WADT    28800 D  # West Australian Daylight-Saving Time (not in zic)
+ WAST    25200    # West Australian Standard Time (not in zic)
+ WDT     32400 D  # West Australian Daylight-Saving Time (not in zic)
+ # CONFLICT! WST is not unique
+ # Other timezones:
+ #  - WST: West Samoa Time
+ WST     28800    # Western Standard Time (Australia)
+                  #     (Antarctica/Casey)
+                  #     (Australia/Perth)
+ 
diff -cNr cvs/pgsql/src/timezone/tznames/templates/Etc.txt cvs.build/pgsql/src/timezone/tznames/templates/Etc.txt
*** cvs/pgsql/src/timezone/tznames/templates/Etc.txt	1970-01-01 01:00:00.000000000 +0100
--- cvs.build/pgsql/src/timezone/tznames/templates/Etc.txt	2006-07-13 18:06:01.000000000 +0200
***************
*** 0 ****
--- 1,41 ----
+ #
+ # NOTE:
+ #   This file is NOT loaded by the PostgreSQL database. It just serves as a
+ #   template for timezones you could need.
+ #
+ #   To add a timezone abbreviation, copy the definition from here to
+ #   ../sets/<YourSetName> and specify
+ #
+ #   timezone_abbreviations = '<YourSetName>'
+ #
+ #   in postgresql.conf. See the existing files in ../sets for information on
+ #   how to include other files and how to override timezone abbreviations from
+ #   the default set.
+ #
+ 
+ GMT         0    # Greenwich Mean Time
+                  #     (Africa/Abidjan)
+                  #     (Africa/Bamako)
+                  #     (Africa/Banjul)
+                  #     (Africa/Bissau)
+                  #     (Africa/Conakry)
+                  #     (Africa/Dakar)
+                  #     (Africa/Lome)
+                  #     (Africa/Monrovia)
+                  #     (Africa/Nouakchott)
+                  #     (Africa/Ouagadougou)
+                  #     (Africa/Sao_Tome)
+                  #     (America/Danmarkshavn)
+                  #     (Atlantic/Reykjavik)
+                  #     (Atlantic/St_Helena)
+                  #     (Etc/GMT)
+                  #     (Europe/Dublin)
+                  #     (Europe/London)
+ UCT         0    # Universal Coordinated Time
+                  #     (Etc/UCT)
+ UT          0    # Universal Time (not in zic)
+ UTC         0    # Coordinated Universal Time
+                  #     (Etc/UTC)
+ Z           0    # Zulu
+ ZULU        0    # Zulu
+ 
diff -cNr cvs/pgsql/src/timezone/tznames/templates/Europe.txt cvs.build/pgsql/src/timezone/tznames/templates/Europe.txt
*** cvs/pgsql/src/timezone/tznames/templates/Europe.txt	1970-01-01 01:00:00.000000000 +0100
--- cvs.build/pgsql/src/timezone/tznames/templates/Europe.txt	2006-07-13 18:06:01.000000000 +0200
***************
*** 0 ****
--- 1,215 ----
+ #
+ # NOTE:
+ #   This file is NOT loaded by the PostgreSQL database. It just serves as a
+ #   template for timezones you could need.
+ #
+ #   To add a timezone abbreviation, copy the definition from here to
+ #   ../sets/<YourSetName> and specify
+ #
+ #   timezone_abbreviations = '<YourSetName>'
+ #
+ #   in postgresql.conf. See the existing files in ../sets for information on
+ #   how to include other files and how to override timezone abbreviations from
+ #   the default set.
+ #
+ 
+ BST      3600 D  # British Summer Time
+                  # Brazil Standard Time
+                  # Bering Summer Time
+                  #     (Europe/London)
+ CEST     7200 D  # Central Europe Summer Time
+                  #     (Africa/Ceuta)
+                  #     (Europe/Amsterdam)
+                  #     (Europe/Andorra)
+                  #     (Europe/Belgrade)
+                  #     (Europe/Berlin)
+                  #     (Europe/Brussels)
+                  #     (Europe/Budapest)
+                  #     (Europe/Copenhagen)
+                  #     (Europe/Gibraltar)
+                  #     (Europe/Luxembourg)
+                  #     (Europe/Madrid)
+                  #     (Europe/Malta)
+                  #     (Europe/Monaco)
+                  #     (Europe/Oslo)
+                  #     (Europe/Paris)
+                  #     (Europe/Prague)
+                  #     (Europe/Rome)
+                  #     (Europe/Stockholm)
+                  #     (Europe/Tirane)
+                  #     (Europe/Vaduz)
+                  #     (Europe/Vienna)
+                  #     (Europe/Warsaw)
+                  #     (Europe/Zurich)
+ CET      3600    # Central Europe Time
+                  #     (Africa/Algiers)
+                  #     (Africa/Ceuta)
+                  #     (Europe/Amsterdam)
+                  #     (Europe/Andorra)
+                  #     (Europe/Belgrade)
+                  #     (Europe/Berlin)
+                  #     (Europe/Brussels)
+                  #     (Europe/Budapest)
+                  #     (Europe/Copenhagen)
+                  #     (Europe/Gibraltar)
+                  #     (Europe/Luxembourg)
+                  #     (Europe/Madrid)
+                  #     (Europe/Malta)
+                  #     (Europe/Monaco)
+                  #     (Europe/Oslo)
+                  #     (Europe/Paris)
+                  #     (Europe/Prague)
+                  #     (Europe/Rome)
+                  #     (Europe/Stockholm)
+                  #     (Europe/Tirane)
+                  #     (Europe/Vaduz)
+                  #     (Europe/Vienna)
+                  #     (Europe/Warsaw)
+                  #     (Europe/Zurich)
+ CETDST   7200 D  # Central Europe Summer Time
+                  #     (Africa/Ceuta)
+                  #     (Europe/Amsterdam)
+                  #     (Europe/Andorra)
+                  #     (Europe/Belgrade)
+                  #     (Europe/Berlin)
+                  #     (Europe/Brussels)
+                  #     (Europe/Budapest)
+                  #     (Europe/Copenhagen)
+                  #     (Europe/Gibraltar)
+                  #     (Europe/Luxembourg)
+                  #     (Europe/Madrid)
+                  #     (Europe/Malta)
+                  #     (Europe/Monaco)
+                  #     (Europe/Oslo)
+                  #     (Europe/Paris)
+                  #     (Europe/Prague)
+                  #     (Europe/Rome)
+                  #     (Europe/Stockholm)
+                  #     (Europe/Tirane)
+                  #     (Europe/Vaduz)
+                  #     (Europe/Vienna)
+                  #     (Europe/Warsaw)
+                  #     (Europe/Zurich)
+ EEST    10800 D  # East-Egypt Summertime
+                  # Eastern Europe Summer Time
+                  #     (Africa/Cairo)
+                  #     (Asia/Amman)
+                  #     (Asia/Beirut)
+                  #     (Asia/Damascus)
+                  #     (Asia/Gaza)
+                  #     (Asia/Nicosia)
+                  #     (Europe/Athens)
+                  #     (Europe/Bucharest)
+                  #     (Europe/Chisinau)
+                  #     (Europe/Helsinki)
+                  #     (Europe/Istanbul)
+                  #     (Europe/Kaliningrad)
+                  #     (Europe/Kiev)
+                  #     (Europe/Minsk)
+                  #     (Europe/Riga)
+                  #     (Europe/Simferopol)
+                  #     (Europe/Sofia)
+                  #     (Europe/Tallinn)
+                  #     (Europe/Uzhgorod)
+                  #     (Europe/Vilnius)
+                  #     (Europe/Zaporozhye)
+ EET      7200    # East-Egypt Time
+                  # Eastern Europe Time
+                  #     (Africa/Cairo)
+                  #     (Africa/Tripoli)
+                  #     (Asia/Amman)
+                  #     (Asia/Beirut)
+                  #     (Asia/Damascus)
+                  #     (Asia/Gaza)
+                  #     (Asia/Nicosia)
+                  #     (Europe/Athens)
+                  #     (Europe/Bucharest)
+                  #     (Europe/Chisinau)
+                  #     (Europe/Helsinki)
+                  #     (Europe/Istanbul)
+                  #     (Europe/Kaliningrad)
+                  #     (Europe/Kiev)
+                  #     (Europe/Minsk)
+                  #     (Europe/Riga)
+                  #     (Europe/Simferopol)
+                  #     (Europe/Sofia)
+                  #     (Europe/Tallinn)
+                  #     (Europe/Uzhgorod)
+                  #     (Europe/Vilnius)
+                  #     (Europe/Zaporozhye)
+ EETDST  10800 D  # East-Egypt Summertime
+                  # Eastern Europe Summer Time
+                  #     (Africa/Cairo)
+                  #     (Asia/Amman)
+                  #     (Asia/Beirut)
+                  #     (Asia/Damascus)
+                  #     (Asia/Gaza)
+                  #     (Asia/Nicosia)
+                  #     (Europe/Athens)
+                  #     (Europe/Bucharest)
+                  #     (Europe/Chisinau)
+                  #     (Europe/Helsinki)
+                  #     (Europe/Istanbul)
+                  #     (Europe/Kaliningrad)
+                  #     (Europe/Kiev)
+                  #     (Europe/Minsk)
+                  #     (Europe/Riga)
+                  #     (Europe/Simferopol)
+                  #     (Europe/Sofia)
+                  #     (Europe/Tallinn)
+                  #     (Europe/Uzhgorod)
+                  #     (Europe/Vilnius)
+                  #     (Europe/Zaporozhye)
+ GMT         0    # Greenwich Mean Time
+                  #     (Africa/Abidjan)
+                  #     (Africa/Bamako)
+                  #     (Africa/Banjul)
+                  #     (Africa/Bissau)
+                  #     (Africa/Conakry)
+                  #     (Africa/Dakar)
+                  #     (Africa/Lome)
+                  #     (Africa/Monrovia)
+                  #     (Africa/Nouakchott)
+                  #     (Africa/Ouagadougou)
+                  #     (Africa/Sao_Tome)
+                  #     (America/Danmarkshavn)
+                  #     (Atlantic/Reykjavik)
+                  #     (Atlantic/St_Helena)
+                  #     (Etc/GMT)
+                  #     (Europe/Dublin)
+                  #     (Europe/London)
+ # CONFLICT! IST is not unique
+ # Other timezones:
+ # - IST: Indian Standard Time (Asia)
+ # - IST: Israel Standard Time (Asia)
+ IST      3600 D  # Irish Summer Time
+                  #     (Europe/Dublin)
+ MEST     7200 D  # Middle Europe Summer Time (not in zic)
+ MET      3600    # Middle Europe Time (not in zic)
+ METDST   7200 D  # Middle Europe Summer Time (not in zic)
+ MEZ      3600    # Mitteleuropäische Zeit (German) (not in zic)
+ MSD     14400 D  # Moscow Daylight Time
+                  #     (Europe/Moscow)
+ MSK     10800    # Moscow Time
+                  #     (Europe/Moscow)
+ SAMST   18000 D  # Samara Summer Time
+                  #     (Europe/Samara)
+ SAMT    14400    # Samara Time
+                  #     (Europe/Samara)
+ WEST     3600 D  # Western Europe Summer Time
+                  #     (Atlantic/Canary)
+                  #     (Atlantic/Faeroe)
+                  #     (Atlantic/Madeira)
+                  #     (Europe/Lisbon)
+ WET         0    # Western Europe Time
+                  #     (Africa/Casablanca)
+                  #     (Africa/El_Aaiun)
+                  #     (Atlantic/Canary)
+                  #     (Atlantic/Faeroe)
+                  #     (Atlantic/Madeira)
+                  #     (Europe/Lisbon)
+ WETDST   3600 D  # Western Europe Summer Time
+                  #     (Atlantic/Canary)
+                  #     (Atlantic/Faeroe)
+                  #     (Atlantic/Madeira)
+                  #     (Europe/Lisbon)
diff -cNr cvs/pgsql/src/timezone/tznames/templates/Indian.txt cvs.build/pgsql/src/timezone/tznames/templates/Indian.txt
*** cvs/pgsql/src/timezone/tznames/templates/Indian.txt	1970-01-01 01:00:00.000000000 +0100
--- cvs.build/pgsql/src/timezone/tznames/templates/Indian.txt	2006-07-13 18:06:01.000000000 +0200
***************
*** 0 ****
--- 1,43 ----
+ #
+ # NOTE:
+ #   This file is NOT loaded by the PostgreSQL database. It just serves as a
+ #   template for timezones you could need.
+ #
+ #   To add a timezone abbreviation, copy the definition from here to
+ #   ../sets/<YourSetName> and specify
+ #
+ #   timezone_abbreviations = '<YourSetName>'
+ #
+ #   in postgresql.conf. See the existing files in ../sets for information on
+ #   how to include other files and how to override timezone abbreviations from
+ #   the default set.
+ #
+ 
+ CCT     23400    # Cocos Islands Time (Indian Ocean)
+                  #     (Indian/Cocos)
+ CXT     25200    # Christmas Island Time (Indian Ocean)
+                  #     (Indian/Christmas)
+ EAT     10800    # East Africa Time
+                  #     (Africa/Addis_Ababa)
+                  #     (Africa/Asmera)
+                  #     (Africa/Dar_es_Salaam)
+                  #     (Africa/Djibouti)
+                  #     (Africa/Kampala)
+                  #     (Africa/Khartoum)
+                  #     (Africa/Mogadishu)
+                  #     (Africa/Nairobi)
+                  #     (Indian/Antananarivo)
+                  #     (Indian/Comoro)
+                  #     (Indian/Mayotte)
+ IOT     21600    # British Indian Ocean Territory (Chagos) (there was a timezone change recently in 1996)
+                  #     (Indian/Chagos)
+ MUT     14400    # Mauritius Island Time
+                  #     (Indian/Mauritius)
+ MVT     18000    # Maldives Island Time
+                  #     (Indian/Maldives)
+ RET     14400    # Reunion Time
+                  #     (Indian/Reunion)
+ SCT     14400    # Seychelles Time
+                  #     (Indian/Mahe)
+ TFT     18000    # Kerguelen Time
+                  #     (Indian/Kerguelen)
diff -cNr cvs/pgsql/src/timezone/tznames/templates/Pacific.txt cvs.build/pgsql/src/timezone/tznames/templates/Pacific.txt
*** cvs/pgsql/src/timezone/tznames/templates/Pacific.txt	1970-01-01 01:00:00.000000000 +0100
--- cvs.build/pgsql/src/timezone/tznames/templates/Pacific.txt	2006-07-13 18:06:01.000000000 +0200
***************
*** 0 ****
--- 1,108 ----
+ #
+ # NOTE:
+ #   This file is NOT loaded by the PostgreSQL database. It just serves as a
+ #   template for timezones you could need.
+ #
+ #   To add a timezone abbreviation, copy the definition from here to
+ #   ../sets/<YourSetName> and specify
+ #
+ #   timezone_abbreviations = '<YourSetName>'
+ #
+ #   in postgresql.conf. See the existing files in ../sets for information on
+ #   how to include other files and how to override timezone abbreviations from
+ #   the default set.
+ #
+ 
+ CHADT   49500 D  # Chatham Daylight Time (New Zealand)
+                  #     (Pacific/Chatham)
+ CHAST   45900    # Chatham Standard Time (New Zealand)
+                  #     (Pacific/Chatham)
+ ChST    36000    # Chamorro Standard Time (lower case "h" is as in zic)
+                  #     (Pacific/Guam)
+                  #     (Pacific/Saipan)
+ CKT     43200    # Cook Islands Time (not in zic)
+ EASST  -18000 D  # Easter Island Summer Time (Chile)
+                  #     (Pacific/Easter)
+ # CONFLICT! EAST is not unique
+ # Other timezones:
+ #  - EAST: East Australian Standard Time (Australia)
+ EAST   -21600    # Easter Island Time (Chile)
+                  #     (Pacific/Easter)
+ FJST   -46800 D  # Fiji Summer Time (not in zic)
+ FJT    -43200    # Fiji Time (not in zic)
+ GALT   -21600    # Galapagos Time
+                  #     (Pacific/Galapagos)
+ GAMT   -32400    # Gambier Time
+                  #     (Pacific/Gambier)
+ GILT    43200    # Gilbert Islands Time
+                  #     (Pacific/Tarawa)
+ HST    -36000    # Hawaiian Standard Time
+                  #     (Pacific/Honolulu)
+                  #     (Pacific/Johnston)
+ KOST    39600    # Kosrae Time
+                  #     (Pacific/Kosrae)
+ LINT    50400    # Line Islands Time (Kiribati)
+                  #     (Pacific/Kiritimati)
+ MART   -34200    # Marquesas Time
+                  #     (Pacific/Marquesas)
+ MHT     43200    # Kwajalein Time
+                  #     (Pacific/Kwajalein)
+                  #     (Pacific/Majuro)
+ MPT     36000    # North Mariana Islands Time (not in zic)
+ NCT     39600    # New Caledonia Time (not in zic)
+ # CONFLICT! NFT is not unique
+ # Other timezones:
+ #  - NFT: Newfoundland Time (America)
+ NFT     41400    # Norfolk Time
+                  #     (Pacific/Norfolk)
+ NRT     43200    # Nauru Time
+                  #     (Pacific/Nauru)
+ NUT    -39600    # Niue Time
+                  #     (Pacific/Niue)
+ NZDT    46800 D  # New Zealand Daylight Time
+                  #     (Antarctica/McMurdo)
+                  #     (Pacific/Auckland)
+ NZST    43200    # New Zealand Standard Time
+                  #     (Antarctica/McMurdo)
+                  #     (Pacific/Auckland)
+ PGT     36000    # Papua New Guinea Time
+                  #     (Pacific/Port_Moresby)
+ PHOT    46800    # Phoenix Islands Time (Kiribati)
+                  #     (Pacific/Enderbury)
+ PONT    39600    # Ponape Time (Micronesia)
+                  #     (Pacific/Ponape)
+ PST    -28800    # Pacific Standard Time
+                  #     (America/Dawson)
+                  #     (America/Los_Angeles)
+                  #     (America/Tijuana)
+                  #     (America/Vancouver)
+                  #     (America/Whitehorse)
+                  #     (Pacific/Pitcairn)
+ PWT     32400    # Palau Time
+                  #     (Pacific/Palau)
+ SBT     39600    # Solomon Islands Time
+                  #     (Pacific/Guadalcanal)
+ SST    -39600    # South Sumatran Time
+                  #     (Pacific/Midway)
+                  #     (Pacific/Pago_Pago)
+ TAHT   -36000    # Tahiti Time (zic says "TAHT", other sources "THAT")
+                  #     (Pacific/Tahiti)
+ TKT    -36000    # Tokelau Time
+                  #     (Pacific/Fakaofo)
+ TOT     46800    # Tonga Time (not in zic)
+ TRUT    36000    # Truk Time (zic says "TRUT", other souces say "TRUK")
+                  #     (Pacific/Truk)
+ TVT     43200    # Tuvalu Time
+                  #     (Pacific/Funafuti)
+ VUT     39600    # Vanuata Time (not in zic)
+ WAKT    43200    # Wake Time
+                  #     (Pacific/Wake)
+ WFT     43200    # Wallis and Futuna Time
+                  #     (Pacific/Wallis)
+ # CONFLICT! WST is not unique
+ # Other timezones:
+ #  - WST: Western Standard Time (Australia)
+ WST    -39600    # West Samoa Time
+                  #     (Pacific/Apia)
+ YAPT    36000    # Yap Time (Micronesia) (not in zic)
+ 
