diff --git a/postgresql-timezonetz-2017-tests.patch b/postgresql-timezonetz-2017-tests.patch new file mode 100644 index 0000000..69ff264 --- /dev/null +++ b/postgresql-timezonetz-2017-tests.patch @@ -0,0 +1,751 @@ +From d8ec6b9c8c265c2f29b1c0e0e4205895baaa326d Mon Sep 17 00:00:00 2001 +From: Tom Lane +Date: Thu, 9 Mar 2017 17:20:11 -0500 +Subject: [PATCH] Fix timestamptz regression test to still work with latest + IANA zone data. + +The IANA timezone crew continues to chip away at their project of removing +timezone abbreviations that have no real-world currency from their +database. The tzdata2017a update removes all such abbreviations for +South American zones, as well as much of the Pacific. This breaks some +test cases in timestamptz.sql that were expecting America/Santiago and +America/Caracas to have non-numeric abbreviations. + +The test cases involving America/Santiago seem to have selected that +zone more or less at random, so just replace it with America/New_York, +which is of similar longitude. The cases involving America/Caracas are +harder since they were chosen to test a time-varying zone abbreviation +around a point where it changed meaning in the backwards direction. +Fortunately, Europe/Moscow has a similar case in 2014, and the MSK/MSD +abbreviations are well enough attested that IANA seems unlikely to +decide to remove them from the database in future. + +With these changes, this regression test should pass when using any IANA +zone database from 2015 or later. One could wish that there were a few +years more daylight on how out-of-date your zone database can be ... but +really the --with-system-tzdata option is only meant for use on platforms +where the zone database is kept up-to-date pretty faithfully, so I do not +think this is a big objection. + +Discussion: https://postgr.es/m/6749.1489087470@sss.pgh.pa.us +--- + src/test/regress/expected/timestamptz.out | 324 ++++++++++-------------------- + src/test/regress/sql/timestamptz.sql | 103 ++++------ + 2 files changed, 148 insertions(+), 279 deletions(-) + +diff --git a/src/test/regress/expected/timestamptz.out b/src/test/regress/expected/timestamptz.out +index 51d4d21..3319247 100644 +--- a/src/test/regress/expected/timestamptz.out ++++ b/src/test/regress/expected/timestamptz.out +@@ -1773,24 +1773,24 @@ SELECT * FROM TIMESTAMPTZ_TST ORDER BY a; + --Cleanup + DROP TABLE TIMESTAMPTZ_TST; + -- test timestamptz constructors +-set TimeZone to 'America/Santiago'; ++set TimeZone to 'America/New_York'; + -- numeric timezone + SELECT make_timestamptz(1973, 07, 15, 08, 15, 55.33); + make_timestamptz + --------------------------------- +- Sun Jul 15 08:15:55.33 1973 CLT ++ Sun Jul 15 08:15:55.33 1973 EDT + (1 row) + + SELECT make_timestamptz(1973, 07, 15, 08, 15, 55.33, '+2'); + make_timestamptz + --------------------------------- +- Sun Jul 15 02:15:55.33 1973 CLT ++ Sun Jul 15 02:15:55.33 1973 EDT + (1 row) + + SELECT make_timestamptz(1973, 07, 15, 08, 15, 55.33, '-2'); + make_timestamptz + --------------------------------- +- Sun Jul 15 06:15:55.33 1973 CLT ++ Sun Jul 15 06:15:55.33 1973 EDT + (1 row) + + WITH tzs (tz) AS (VALUES +@@ -1799,23 +1799,23 @@ WITH tzs (tz) AS (VALUES + ('+10:00:1'), ('+10:00:01'), + ('+10:00:10')) + SELECT make_timestamptz(2010, 2, 27, 3, 45, 00, tz), tz FROM tzs; +- make_timestamptz | tz +--------------------------------+----------- +- Fri Feb 26 23:45:00 2010 CLST | +1 +- Fri Feb 26 23:45:00 2010 CLST | +1: +- Fri Feb 26 23:45:00 2010 CLST | +1:0 +- Fri Feb 26 23:45:00 2010 CLST | +100 +- Fri Feb 26 23:45:00 2010 CLST | +1:00 +- Fri Feb 26 23:45:00 2010 CLST | +01:00 +- Fri Feb 26 14:45:00 2010 CLST | +10 +- Fri Feb 26 14:45:00 2010 CLST | +1000 +- Fri Feb 26 14:45:00 2010 CLST | +10: +- Fri Feb 26 14:45:00 2010 CLST | +10:0 +- Fri Feb 26 14:45:00 2010 CLST | +10:00 +- Fri Feb 26 14:45:00 2010 CLST | +10:00: +- Fri Feb 26 14:44:59 2010 CLST | +10:00:1 +- Fri Feb 26 14:44:59 2010 CLST | +10:00:01 +- Fri Feb 26 14:44:50 2010 CLST | +10:00:10 ++ make_timestamptz | tz ++------------------------------+----------- ++ Fri Feb 26 21:45:00 2010 EST | +1 ++ Fri Feb 26 21:45:00 2010 EST | +1: ++ Fri Feb 26 21:45:00 2010 EST | +1:0 ++ Fri Feb 26 21:45:00 2010 EST | +100 ++ Fri Feb 26 21:45:00 2010 EST | +1:00 ++ Fri Feb 26 21:45:00 2010 EST | +01:00 ++ Fri Feb 26 12:45:00 2010 EST | +10 ++ Fri Feb 26 12:45:00 2010 EST | +1000 ++ Fri Feb 26 12:45:00 2010 EST | +10: ++ Fri Feb 26 12:45:00 2010 EST | +10:0 ++ Fri Feb 26 12:45:00 2010 EST | +10:00 ++ Fri Feb 26 12:45:00 2010 EST | +10:00: ++ Fri Feb 26 12:44:59 2010 EST | +10:00:1 ++ Fri Feb 26 12:44:59 2010 EST | +10:00:01 ++ Fri Feb 26 12:44:50 2010 EST | +10:00:10 + (15 rows) + + -- these should fail +@@ -1861,30 +1861,29 @@ SELECT make_timestamptz(1881, 12, 10, 0, 0, 0, 'Europe/Paris') AT TIME ZONE 'UTC + SELECT make_timestamptz(1910, 12, 24, 0, 0, 0, 'Nehwon/Lankhmar'); + ERROR: time zone "Nehwon/Lankhmar" not recognized + -- abbreviations +-SELECT make_timestamptz(2008, 12, 10, 10, 10, 10, 'CLST'); +- make_timestamptz +-------------------------------- +- Wed Dec 10 10:10:10 2008 CLST ++SELECT make_timestamptz(2008, 12, 10, 10, 10, 10, 'EST'); ++ make_timestamptz ++------------------------------ ++ Wed Dec 10 10:10:10 2008 EST + (1 row) + +-SELECT make_timestamptz(2008, 12, 10, 10, 10, 10, 'CLT'); +- make_timestamptz +-------------------------------- +- Wed Dec 10 11:10:10 2008 CLST ++SELECT make_timestamptz(2008, 12, 10, 10, 10, 10, 'EDT'); ++ make_timestamptz ++------------------------------ ++ Wed Dec 10 09:10:10 2008 EST + (1 row) + + SELECT make_timestamptz(2014, 12, 10, 10, 10, 10, 'PST8PDT'); +- make_timestamptz +-------------------------------- +- Wed Dec 10 15:10:10 2014 CLST ++ make_timestamptz ++------------------------------ ++ Wed Dec 10 13:10:10 2014 EST + (1 row) + + RESET TimeZone; + -- + -- Test behavior with a dynamic (time-varying) timezone abbreviation. + -- These tests rely on the knowledge that MSK (Europe/Moscow standard time) +--- moved forwards in Mar 2011 and that VET (America/Caracas standard time) +--- moved backwards in Dec 2007. ++-- moved forwards in Mar 2011 and backwards again in Oct 2014. + -- + SET TimeZone to 'UTC'; + SELECT '2011-03-27 00:00:00 Europe/Moscow'::timestamptz; +@@ -1995,100 +1994,64 @@ SELECT '2011-03-27 04:00:00 MSK'::timestamptz; + Sun Mar 27 00:00:00 2011 UTC + (1 row) + +-SELECT '2007-12-09 02:00:00 America/Caracas'::timestamptz; ++SELECT '2014-10-26 00:00:00 Europe/Moscow'::timestamptz; + timestamptz + ------------------------------ +- Sun Dec 09 06:00:00 2007 UTC ++ Sat Oct 25 20:00:00 2014 UTC + (1 row) + +-SELECT '2007-12-09 02:29:59 America/Caracas'::timestamptz; ++SELECT '2014-10-26 00:59:59 Europe/Moscow'::timestamptz; + timestamptz + ------------------------------ +- Sun Dec 09 06:29:59 2007 UTC ++ Sat Oct 25 20:59:59 2014 UTC + (1 row) + +-SELECT '2007-12-09 02:30:00 America/Caracas'::timestamptz; ++SELECT '2014-10-26 01:00:00 Europe/Moscow'::timestamptz; + timestamptz + ------------------------------ +- Sun Dec 09 07:00:00 2007 UTC ++ Sat Oct 25 22:00:00 2014 UTC + (1 row) + +-SELECT '2007-12-09 02:30:01 America/Caracas'::timestamptz; ++SELECT '2014-10-26 01:00:01 Europe/Moscow'::timestamptz; + timestamptz + ------------------------------ +- Sun Dec 09 07:00:01 2007 UTC ++ Sat Oct 25 22:00:01 2014 UTC + (1 row) + +-SELECT '2007-12-09 02:59:59 America/Caracas'::timestamptz; ++SELECT '2014-10-26 02:00:00 Europe/Moscow'::timestamptz; + timestamptz + ------------------------------ +- Sun Dec 09 07:29:59 2007 UTC ++ Sat Oct 25 23:00:00 2014 UTC + (1 row) + +-SELECT '2007-12-09 03:00:00 America/Caracas'::timestamptz; ++SELECT '2014-10-26 00:00:00 MSK'::timestamptz; + timestamptz + ------------------------------ +- Sun Dec 09 07:30:00 2007 UTC ++ Sat Oct 25 20:00:00 2014 UTC + (1 row) + +-SELECT '2007-12-09 03:00:01 America/Caracas'::timestamptz; ++SELECT '2014-10-26 00:59:59 MSK'::timestamptz; + timestamptz + ------------------------------ +- Sun Dec 09 07:30:01 2007 UTC ++ Sat Oct 25 20:59:59 2014 UTC + (1 row) + +-SELECT '2007-12-09 04:00:00 America/Caracas'::timestamptz; ++SELECT '2014-10-26 01:00:00 MSK'::timestamptz; + timestamptz + ------------------------------ +- Sun Dec 09 08:30:00 2007 UTC ++ Sat Oct 25 22:00:00 2014 UTC + (1 row) + +-SELECT '2007-12-09 02:00:00 VET'::timestamptz; ++SELECT '2014-10-26 01:00:01 MSK'::timestamptz; + timestamptz + ------------------------------ +- Sun Dec 09 06:00:00 2007 UTC ++ Sat Oct 25 22:00:01 2014 UTC + (1 row) + +-SELECT '2007-12-09 02:29:59 VET'::timestamptz; ++SELECT '2014-10-26 02:00:00 MSK'::timestamptz; + timestamptz + ------------------------------ +- Sun Dec 09 06:29:59 2007 UTC +-(1 row) +- +-SELECT '2007-12-09 02:30:00 VET'::timestamptz; +- timestamptz +------------------------------- +- Sun Dec 09 07:00:00 2007 UTC +-(1 row) +- +-SELECT '2007-12-09 02:30:01 VET'::timestamptz; +- timestamptz +------------------------------- +- Sun Dec 09 07:00:01 2007 UTC +-(1 row) +- +-SELECT '2007-12-09 02:59:59 VET'::timestamptz; +- timestamptz +------------------------------- +- Sun Dec 09 07:29:59 2007 UTC +-(1 row) +- +-SELECT '2007-12-09 03:00:00 VET'::timestamptz; +- timestamptz +------------------------------- +- Sun Dec 09 07:30:00 2007 UTC +-(1 row) +- +-SELECT '2007-12-09 03:00:01 VET'::timestamptz; +- timestamptz +------------------------------- +- Sun Dec 09 07:30:01 2007 UTC +-(1 row) +- +-SELECT '2007-12-09 04:00:00 VET'::timestamptz; +- timestamptz +------------------------------- +- Sun Dec 09 08:30:00 2007 UTC ++ Sat Oct 25 23:00:00 2014 UTC + (1 row) + + SELECT '2011-03-27 00:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; +@@ -2199,112 +2162,76 @@ SELECT '2011-03-27 04:00:00'::timestamp AT TIME ZONE 'MSK'; + Sun Mar 27 00:00:00 2011 UTC + (1 row) + +-SELECT '2007-12-09 02:00:00'::timestamp AT TIME ZONE 'America/Caracas'; ++SELECT '2014-10-26 00:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; + timezone + ------------------------------ +- Sun Dec 09 06:00:00 2007 UTC ++ Sat Oct 25 20:00:00 2014 UTC + (1 row) + +-SELECT '2007-12-09 02:29:59'::timestamp AT TIME ZONE 'America/Caracas'; ++SELECT '2014-10-26 00:59:59'::timestamp AT TIME ZONE 'Europe/Moscow'; + timezone + ------------------------------ +- Sun Dec 09 06:29:59 2007 UTC ++ Sat Oct 25 20:59:59 2014 UTC + (1 row) + +-SELECT '2007-12-09 02:30:00'::timestamp AT TIME ZONE 'America/Caracas'; ++SELECT '2014-10-26 01:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; + timezone + ------------------------------ +- Sun Dec 09 07:00:00 2007 UTC ++ Sat Oct 25 22:00:00 2014 UTC + (1 row) + +-SELECT '2007-12-09 02:30:01'::timestamp AT TIME ZONE 'America/Caracas'; ++SELECT '2014-10-26 01:00:01'::timestamp AT TIME ZONE 'Europe/Moscow'; + timezone + ------------------------------ +- Sun Dec 09 07:00:01 2007 UTC ++ Sat Oct 25 22:00:01 2014 UTC + (1 row) + +-SELECT '2007-12-09 02:59:59'::timestamp AT TIME ZONE 'America/Caracas'; ++SELECT '2014-10-26 02:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; + timezone + ------------------------------ +- Sun Dec 09 07:29:59 2007 UTC ++ Sat Oct 25 23:00:00 2014 UTC + (1 row) + +-SELECT '2007-12-09 03:00:00'::timestamp AT TIME ZONE 'America/Caracas'; ++SELECT '2014-10-26 00:00:00'::timestamp AT TIME ZONE 'MSK'; + timezone + ------------------------------ +- Sun Dec 09 07:30:00 2007 UTC ++ Sat Oct 25 20:00:00 2014 UTC + (1 row) + +-SELECT '2007-12-09 03:00:01'::timestamp AT TIME ZONE 'America/Caracas'; ++SELECT '2014-10-26 00:59:59'::timestamp AT TIME ZONE 'MSK'; + timezone + ------------------------------ +- Sun Dec 09 07:30:01 2007 UTC ++ Sat Oct 25 20:59:59 2014 UTC + (1 row) + +-SELECT '2007-12-09 04:00:00'::timestamp AT TIME ZONE 'America/Caracas'; ++SELECT '2014-10-26 01:00:00'::timestamp AT TIME ZONE 'MSK'; + timezone + ------------------------------ +- Sun Dec 09 08:30:00 2007 UTC ++ Sat Oct 25 22:00:00 2014 UTC + (1 row) + +-SELECT '2007-12-09 02:00:00'::timestamp AT TIME ZONE 'VET'; ++SELECT '2014-10-26 01:00:01'::timestamp AT TIME ZONE 'MSK'; + timezone + ------------------------------ +- Sun Dec 09 06:00:00 2007 UTC ++ Sat Oct 25 22:00:01 2014 UTC + (1 row) + +-SELECT '2007-12-09 02:29:59'::timestamp AT TIME ZONE 'VET'; ++SELECT '2014-10-26 02:00:00'::timestamp AT TIME ZONE 'MSK'; + timezone + ------------------------------ +- Sun Dec 09 06:29:59 2007 UTC ++ Sat Oct 25 23:00:00 2014 UTC + (1 row) + +-SELECT '2007-12-09 02:30:00'::timestamp AT TIME ZONE 'VET'; +- timezone +------------------------------- +- Sun Dec 09 07:00:00 2007 UTC +-(1 row) +- +-SELECT '2007-12-09 02:30:01'::timestamp AT TIME ZONE 'VET'; +- timezone +------------------------------- +- Sun Dec 09 07:00:01 2007 UTC +-(1 row) +- +-SELECT '2007-12-09 02:59:59'::timestamp AT TIME ZONE 'VET'; +- timezone +------------------------------- +- Sun Dec 09 07:29:59 2007 UTC +-(1 row) +- +-SELECT '2007-12-09 03:00:00'::timestamp AT TIME ZONE 'VET'; +- timezone +------------------------------- +- Sun Dec 09 07:30:00 2007 UTC +-(1 row) +- +-SELECT '2007-12-09 03:00:01'::timestamp AT TIME ZONE 'VET'; +- timezone +------------------------------- +- Sun Dec 09 07:30:01 2007 UTC +-(1 row) +- +-SELECT '2007-12-09 04:00:00'::timestamp AT TIME ZONE 'VET'; +- timezone +------------------------------- +- Sun Dec 09 08:30:00 2007 UTC +-(1 row) +- +-SELECT make_timestamptz(2007, 12, 9, 2, 0, 0, 'VET'); ++SELECT make_timestamptz(2014, 10, 26, 0, 0, 0, 'MSK'); + make_timestamptz + ------------------------------ +- Sun Dec 09 06:00:00 2007 UTC ++ Sat Oct 25 20:00:00 2014 UTC + (1 row) + +-SELECT make_timestamptz(2007, 12, 9, 3, 0, 0, 'VET'); ++SELECT make_timestamptz(2014, 10, 26, 1, 0, 0, 'MSK'); + make_timestamptz + ------------------------------ +- Sun Dec 09 07:30:00 2007 UTC ++ Sat Oct 25 22:00:00 2014 UTC + (1 row) + + SELECT to_timestamp( 0); -- 1970-01-01 00:00:00+00 +@@ -2391,47 +2318,34 @@ SELECT '2011-03-27 00:00:00 UTC'::timestamptz; + Sun Mar 27 04:00:00 2011 MSK + (1 row) + +-SET TimeZone to 'America/Caracas'; +-SELECT '2007-12-09 06:00:00 UTC'::timestamptz; ++SELECT '2014-10-25 21:00:00 UTC'::timestamptz; + timestamptz + ------------------------------ +- Sun Dec 09 02:00:00 2007 VET ++ Sun Oct 26 01:00:00 2014 MSK + (1 row) + +-SELECT '2007-12-09 06:30:00 UTC'::timestamptz; ++SELECT '2014-10-25 21:59:59 UTC'::timestamptz; + timestamptz + ------------------------------ +- Sun Dec 09 02:30:00 2007 VET ++ Sun Oct 26 01:59:59 2014 MSK + (1 row) + +-SELECT '2007-12-09 06:59:59 UTC'::timestamptz; ++SELECT '2014-10-25 22:00:00 UTC'::timestamptz; + timestamptz + ------------------------------ +- Sun Dec 09 02:59:59 2007 VET ++ Sun Oct 26 01:00:00 2014 MSK + (1 row) + +-SELECT '2007-12-09 07:00:00 UTC'::timestamptz; ++SELECT '2014-10-25 22:00:01 UTC'::timestamptz; + timestamptz + ------------------------------ +- Sun Dec 09 02:30:00 2007 VET ++ Sun Oct 26 01:00:01 2014 MSK + (1 row) + +-SELECT '2007-12-09 07:00:01 UTC'::timestamptz; ++SELECT '2014-10-25 23:00:00 UTC'::timestamptz; + timestamptz + ------------------------------ +- Sun Dec 09 02:30:01 2007 VET +-(1 row) +- +-SELECT '2007-12-09 07:29:59 UTC'::timestamptz; +- timestamptz +------------------------------- +- Sun Dec 09 02:59:59 2007 VET +-(1 row) +- +-SELECT '2007-12-09 07:30:00 UTC'::timestamptz; +- timestamptz +------------------------------- +- Sun Dec 09 03:00:00 2007 VET ++ Sun Oct 26 02:00:00 2014 MSK + (1 row) + + RESET TimeZone; +@@ -2477,46 +2391,34 @@ SELECT '2011-03-27 00:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; + Sun Mar 27 04:00:00 2011 + (1 row) + +-SELECT '2007-12-09 06:00:00 UTC'::timestamptz AT TIME ZONE 'America/Caracas'; ++SELECT '2014-10-25 21:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; + timezone + -------------------------- +- Sun Dec 09 02:00:00 2007 ++ Sun Oct 26 01:00:00 2014 + (1 row) + +-SELECT '2007-12-09 06:30:00 UTC'::timestamptz AT TIME ZONE 'America/Caracas'; ++SELECT '2014-10-25 21:59:59 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; + timezone + -------------------------- +- Sun Dec 09 02:30:00 2007 ++ Sun Oct 26 01:59:59 2014 + (1 row) + +-SELECT '2007-12-09 06:59:59 UTC'::timestamptz AT TIME ZONE 'America/Caracas'; ++SELECT '2014-10-25 22:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; + timezone + -------------------------- +- Sun Dec 09 02:59:59 2007 ++ Sun Oct 26 01:00:00 2014 + (1 row) + +-SELECT '2007-12-09 07:00:00 UTC'::timestamptz AT TIME ZONE 'America/Caracas'; ++SELECT '2014-10-25 22:00:01 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; + timezone + -------------------------- +- Sun Dec 09 02:30:00 2007 ++ Sun Oct 26 01:00:01 2014 + (1 row) + +-SELECT '2007-12-09 07:00:01 UTC'::timestamptz AT TIME ZONE 'America/Caracas'; ++SELECT '2014-10-25 23:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; + timezone + -------------------------- +- Sun Dec 09 02:30:01 2007 +-(1 row) +- +-SELECT '2007-12-09 07:29:59 UTC'::timestamptz AT TIME ZONE 'America/Caracas'; +- timezone +--------------------------- +- Sun Dec 09 02:59:59 2007 +-(1 row) +- +-SELECT '2007-12-09 07:30:00 UTC'::timestamptz AT TIME ZONE 'America/Caracas'; +- timezone +--------------------------- +- Sun Dec 09 03:00:00 2007 ++ Sun Oct 26 02:00:00 2014 + (1 row) + + SELECT '2011-03-26 21:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; +@@ -2561,46 +2463,34 @@ SELECT '2011-03-27 00:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; + Sun Mar 27 04:00:00 2011 + (1 row) + +-SELECT '2007-12-09 06:00:00 UTC'::timestamptz AT TIME ZONE 'VET'; ++SELECT '2014-10-25 21:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; + timezone + -------------------------- +- Sun Dec 09 02:00:00 2007 ++ Sun Oct 26 01:00:00 2014 + (1 row) + +-SELECT '2007-12-09 06:30:00 UTC'::timestamptz AT TIME ZONE 'VET'; ++SELECT '2014-10-25 21:59:59 UTC'::timestamptz AT TIME ZONE 'MSK'; + timezone + -------------------------- +- Sun Dec 09 02:30:00 2007 ++ Sun Oct 26 01:59:59 2014 + (1 row) + +-SELECT '2007-12-09 06:59:59 UTC'::timestamptz AT TIME ZONE 'VET'; ++SELECT '2014-10-25 22:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; + timezone + -------------------------- +- Sun Dec 09 02:59:59 2007 ++ Sun Oct 26 01:00:00 2014 + (1 row) + +-SELECT '2007-12-09 07:00:00 UTC'::timestamptz AT TIME ZONE 'VET'; ++SELECT '2014-10-25 22:00:01 UTC'::timestamptz AT TIME ZONE 'MSK'; + timezone + -------------------------- +- Sun Dec 09 02:30:00 2007 ++ Sun Oct 26 01:00:01 2014 + (1 row) + +-SELECT '2007-12-09 07:00:01 UTC'::timestamptz AT TIME ZONE 'VET'; ++SELECT '2014-10-25 23:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; + timezone + -------------------------- +- Sun Dec 09 02:30:01 2007 +-(1 row) +- +-SELECT '2007-12-09 07:29:59 UTC'::timestamptz AT TIME ZONE 'VET'; +- timezone +--------------------------- +- Sun Dec 09 02:59:59 2007 +-(1 row) +- +-SELECT '2007-12-09 07:30:00 UTC'::timestamptz AT TIME ZONE 'VET'; +- timezone +--------------------------- +- Sun Dec 09 03:00:00 2007 ++ Sun Oct 26 02:00:00 2014 + (1 row) + + -- +diff --git a/src/test/regress/sql/timestamptz.sql b/src/test/regress/sql/timestamptz.sql +index ab86622..4e37071 100644 +--- a/src/test/regress/sql/timestamptz.sql ++++ b/src/test/regress/sql/timestamptz.sql +@@ -280,7 +280,7 @@ SELECT * FROM TIMESTAMPTZ_TST ORDER BY a; + DROP TABLE TIMESTAMPTZ_TST; + + -- test timestamptz constructors +-set TimeZone to 'America/Santiago'; ++set TimeZone to 'America/New_York'; + + -- numeric timezone + SELECT make_timestamptz(1973, 07, 15, 08, 15, 55.33); +@@ -309,8 +309,8 @@ SELECT make_timestamptz(1881, 12, 10, 0, 0, 0, 'Europe/Paris') AT TIME ZONE 'UTC + SELECT make_timestamptz(1910, 12, 24, 0, 0, 0, 'Nehwon/Lankhmar'); + + -- abbreviations +-SELECT make_timestamptz(2008, 12, 10, 10, 10, 10, 'CLST'); +-SELECT make_timestamptz(2008, 12, 10, 10, 10, 10, 'CLT'); ++SELECT make_timestamptz(2008, 12, 10, 10, 10, 10, 'EST'); ++SELECT make_timestamptz(2008, 12, 10, 10, 10, 10, 'EDT'); + SELECT make_timestamptz(2014, 12, 10, 10, 10, 10, 'PST8PDT'); + + RESET TimeZone; +@@ -318,8 +318,7 @@ RESET TimeZone; + -- + -- Test behavior with a dynamic (time-varying) timezone abbreviation. + -- These tests rely on the knowledge that MSK (Europe/Moscow standard time) +--- moved forwards in Mar 2011 and that VET (America/Caracas standard time) +--- moved backwards in Dec 2007. ++-- moved forwards in Mar 2011 and backwards again in Oct 2014. + -- + + SET TimeZone to 'UTC'; +@@ -344,23 +343,17 @@ SELECT '2011-03-27 03:00:00 MSK'::timestamptz; + SELECT '2011-03-27 03:00:01 MSK'::timestamptz; + SELECT '2011-03-27 04:00:00 MSK'::timestamptz; + +-SELECT '2007-12-09 02:00:00 America/Caracas'::timestamptz; +-SELECT '2007-12-09 02:29:59 America/Caracas'::timestamptz; +-SELECT '2007-12-09 02:30:00 America/Caracas'::timestamptz; +-SELECT '2007-12-09 02:30:01 America/Caracas'::timestamptz; +-SELECT '2007-12-09 02:59:59 America/Caracas'::timestamptz; +-SELECT '2007-12-09 03:00:00 America/Caracas'::timestamptz; +-SELECT '2007-12-09 03:00:01 America/Caracas'::timestamptz; +-SELECT '2007-12-09 04:00:00 America/Caracas'::timestamptz; ++SELECT '2014-10-26 00:00:00 Europe/Moscow'::timestamptz; ++SELECT '2014-10-26 00:59:59 Europe/Moscow'::timestamptz; ++SELECT '2014-10-26 01:00:00 Europe/Moscow'::timestamptz; ++SELECT '2014-10-26 01:00:01 Europe/Moscow'::timestamptz; ++SELECT '2014-10-26 02:00:00 Europe/Moscow'::timestamptz; + +-SELECT '2007-12-09 02:00:00 VET'::timestamptz; +-SELECT '2007-12-09 02:29:59 VET'::timestamptz; +-SELECT '2007-12-09 02:30:00 VET'::timestamptz; +-SELECT '2007-12-09 02:30:01 VET'::timestamptz; +-SELECT '2007-12-09 02:59:59 VET'::timestamptz; +-SELECT '2007-12-09 03:00:00 VET'::timestamptz; +-SELECT '2007-12-09 03:00:01 VET'::timestamptz; +-SELECT '2007-12-09 04:00:00 VET'::timestamptz; ++SELECT '2014-10-26 00:00:00 MSK'::timestamptz; ++SELECT '2014-10-26 00:59:59 MSK'::timestamptz; ++SELECT '2014-10-26 01:00:00 MSK'::timestamptz; ++SELECT '2014-10-26 01:00:01 MSK'::timestamptz; ++SELECT '2014-10-26 02:00:00 MSK'::timestamptz; + + SELECT '2011-03-27 00:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; + SELECT '2011-03-27 01:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; +@@ -382,26 +375,20 @@ SELECT '2011-03-27 03:00:00'::timestamp AT TIME ZONE 'MSK'; + SELECT '2011-03-27 03:00:01'::timestamp AT TIME ZONE 'MSK'; + SELECT '2011-03-27 04:00:00'::timestamp AT TIME ZONE 'MSK'; + +-SELECT '2007-12-09 02:00:00'::timestamp AT TIME ZONE 'America/Caracas'; +-SELECT '2007-12-09 02:29:59'::timestamp AT TIME ZONE 'America/Caracas'; +-SELECT '2007-12-09 02:30:00'::timestamp AT TIME ZONE 'America/Caracas'; +-SELECT '2007-12-09 02:30:01'::timestamp AT TIME ZONE 'America/Caracas'; +-SELECT '2007-12-09 02:59:59'::timestamp AT TIME ZONE 'America/Caracas'; +-SELECT '2007-12-09 03:00:00'::timestamp AT TIME ZONE 'America/Caracas'; +-SELECT '2007-12-09 03:00:01'::timestamp AT TIME ZONE 'America/Caracas'; +-SELECT '2007-12-09 04:00:00'::timestamp AT TIME ZONE 'America/Caracas'; ++SELECT '2014-10-26 00:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; ++SELECT '2014-10-26 00:59:59'::timestamp AT TIME ZONE 'Europe/Moscow'; ++SELECT '2014-10-26 01:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; ++SELECT '2014-10-26 01:00:01'::timestamp AT TIME ZONE 'Europe/Moscow'; ++SELECT '2014-10-26 02:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; + +-SELECT '2007-12-09 02:00:00'::timestamp AT TIME ZONE 'VET'; +-SELECT '2007-12-09 02:29:59'::timestamp AT TIME ZONE 'VET'; +-SELECT '2007-12-09 02:30:00'::timestamp AT TIME ZONE 'VET'; +-SELECT '2007-12-09 02:30:01'::timestamp AT TIME ZONE 'VET'; +-SELECT '2007-12-09 02:59:59'::timestamp AT TIME ZONE 'VET'; +-SELECT '2007-12-09 03:00:00'::timestamp AT TIME ZONE 'VET'; +-SELECT '2007-12-09 03:00:01'::timestamp AT TIME ZONE 'VET'; +-SELECT '2007-12-09 04:00:00'::timestamp AT TIME ZONE 'VET'; ++SELECT '2014-10-26 00:00:00'::timestamp AT TIME ZONE 'MSK'; ++SELECT '2014-10-26 00:59:59'::timestamp AT TIME ZONE 'MSK'; ++SELECT '2014-10-26 01:00:00'::timestamp AT TIME ZONE 'MSK'; ++SELECT '2014-10-26 01:00:01'::timestamp AT TIME ZONE 'MSK'; ++SELECT '2014-10-26 02:00:00'::timestamp AT TIME ZONE 'MSK'; + +-SELECT make_timestamptz(2007, 12, 9, 2, 0, 0, 'VET'); +-SELECT make_timestamptz(2007, 12, 9, 3, 0, 0, 'VET'); ++SELECT make_timestamptz(2014, 10, 26, 0, 0, 0, 'MSK'); ++SELECT make_timestamptz(2014, 10, 26, 1, 0, 0, 'MSK'); + + SELECT to_timestamp( 0); -- 1970-01-01 00:00:00+00 + SELECT to_timestamp( 946684800); -- 2000-01-01 00:00:00+00 +@@ -425,15 +412,11 @@ SELECT '2011-03-26 23:00:01 UTC'::timestamptz; + SELECT '2011-03-26 23:59:59 UTC'::timestamptz; + SELECT '2011-03-27 00:00:00 UTC'::timestamptz; + +-SET TimeZone to 'America/Caracas'; +- +-SELECT '2007-12-09 06:00:00 UTC'::timestamptz; +-SELECT '2007-12-09 06:30:00 UTC'::timestamptz; +-SELECT '2007-12-09 06:59:59 UTC'::timestamptz; +-SELECT '2007-12-09 07:00:00 UTC'::timestamptz; +-SELECT '2007-12-09 07:00:01 UTC'::timestamptz; +-SELECT '2007-12-09 07:29:59 UTC'::timestamptz; +-SELECT '2007-12-09 07:30:00 UTC'::timestamptz; ++SELECT '2014-10-25 21:00:00 UTC'::timestamptz; ++SELECT '2014-10-25 21:59:59 UTC'::timestamptz; ++SELECT '2014-10-25 22:00:00 UTC'::timestamptz; ++SELECT '2014-10-25 22:00:01 UTC'::timestamptz; ++SELECT '2014-10-25 23:00:00 UTC'::timestamptz; + + RESET TimeZone; + +@@ -445,13 +428,11 @@ SELECT '2011-03-26 23:00:01 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; + SELECT '2011-03-26 23:59:59 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; + SELECT '2011-03-27 00:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; + +-SELECT '2007-12-09 06:00:00 UTC'::timestamptz AT TIME ZONE 'America/Caracas'; +-SELECT '2007-12-09 06:30:00 UTC'::timestamptz AT TIME ZONE 'America/Caracas'; +-SELECT '2007-12-09 06:59:59 UTC'::timestamptz AT TIME ZONE 'America/Caracas'; +-SELECT '2007-12-09 07:00:00 UTC'::timestamptz AT TIME ZONE 'America/Caracas'; +-SELECT '2007-12-09 07:00:01 UTC'::timestamptz AT TIME ZONE 'America/Caracas'; +-SELECT '2007-12-09 07:29:59 UTC'::timestamptz AT TIME ZONE 'America/Caracas'; +-SELECT '2007-12-09 07:30:00 UTC'::timestamptz AT TIME ZONE 'America/Caracas'; ++SELECT '2014-10-25 21:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; ++SELECT '2014-10-25 21:59:59 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; ++SELECT '2014-10-25 22:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; ++SELECT '2014-10-25 22:00:01 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; ++SELECT '2014-10-25 23:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; + + SELECT '2011-03-26 21:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; + SELECT '2011-03-26 22:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; +@@ -461,13 +442,11 @@ SELECT '2011-03-26 23:00:01 UTC'::timestamptz AT TIME ZONE 'MSK'; + SELECT '2011-03-26 23:59:59 UTC'::timestamptz AT TIME ZONE 'MSK'; + SELECT '2011-03-27 00:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; + +-SELECT '2007-12-09 06:00:00 UTC'::timestamptz AT TIME ZONE 'VET'; +-SELECT '2007-12-09 06:30:00 UTC'::timestamptz AT TIME ZONE 'VET'; +-SELECT '2007-12-09 06:59:59 UTC'::timestamptz AT TIME ZONE 'VET'; +-SELECT '2007-12-09 07:00:00 UTC'::timestamptz AT TIME ZONE 'VET'; +-SELECT '2007-12-09 07:00:01 UTC'::timestamptz AT TIME ZONE 'VET'; +-SELECT '2007-12-09 07:29:59 UTC'::timestamptz AT TIME ZONE 'VET'; +-SELECT '2007-12-09 07:30:00 UTC'::timestamptz AT TIME ZONE 'VET'; ++SELECT '2014-10-25 21:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; ++SELECT '2014-10-25 21:59:59 UTC'::timestamptz AT TIME ZONE 'MSK'; ++SELECT '2014-10-25 22:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; ++SELECT '2014-10-25 22:00:01 UTC'::timestamptz AT TIME ZONE 'MSK'; ++SELECT '2014-10-25 23:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; + + -- + -- Test that the pg_timezone_names and pg_timezone_abbrevs views are +-- +2.9.3 + diff --git a/postgresql.spec b/postgresql.spec index 4030610..6c29d67 100644 --- a/postgresql.spec +++ b/postgresql.spec @@ -114,6 +114,7 @@ Patch2: postgresql-logging.patch Patch3: postgresql-perl-rpath.patch Patch5: postgresql-var-run-socket.patch Patch6: postgresql-man.patch +Patch7: postgresql-timezonetz-2017-tests.patch BuildRequires: perl(ExtUtils::MakeMaker) glibc-devel bison flex gawk help2man BuildRequires: perl(ExtUtils::Embed), perl-devel @@ -363,6 +364,7 @@ benchmarks. %patch3 -p1 %patch5 -p1 %patch6 -p1 +%patch7 -p1 # We used to run autoconf here, but there's no longer any real need to, # since Postgres ships with a reasonably modern configure script.