Thread: pgsql: Update time zone data files to tzdata release 2024b.

pgsql: Update time zone data files to tzdata release 2024b.

From
Tom Lane
Date:
Update time zone data files to tzdata release 2024b.

Historical corrections for Mexico, Mongolia, and Portugal.
Notably, Asia/Choibalsan is now an alias for Asia/Ulaanbaatar
rather than being a separate zone, mainly because the differences
between those zones were found to be based on untrustworthy data.

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/502e7bf7f09c458ce66ce043b94864b535c5d5d0

Modified Files
--------------
src/timezone/data/tzdata.zi     | 1653 +++++++++++++++++++--------------------
src/timezone/known_abbrevs.txt  |    2 -
src/timezone/tznames/Default    |    6 +-
src/timezone/tznames/Europe.txt |    6 +-
4 files changed, 824 insertions(+), 843 deletions(-)


Re: pgsql: Update time zone data files to tzdata release 2024b.

From
Andrew Dunstan
Date:



On Tue, Oct 29, 2024 at 11:50 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Update time zone data files to tzdata release 2024b.

Historical corrections for Mexico, Mongolia, and Portugal.
Notably, Asia/Choibalsan is now an alias for Asia/Ulaanbaatar
rather than being a separate zone, mainly because the differences
between those zones were found to be based on untrustworthy data.

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/502e7bf7f09c458ce66ce043b94864b535c5d5d0

Modified Files
--------------
src/timezone/data/tzdata.zi     | 1653 +++++++++++++++++++--------------------
src/timezone/known_abbrevs.txt  |    2 -
src/timezone/tznames/Default    |    6 +-
src/timezone/tznames/Europe.txt |    6 +-
4 files changed, 824 insertions(+), 843 deletions(-)



Crake doesn't seem to like this for cross version upgrade, and the diff looks rather odd:


 
--- /home/andrew/bf/root/upgrade.crake/HEAD/origin-REL9_2_STABLE.sql.fixed	2024-10-29 13:40:01.778445456 -0400
+++ /home/andrew/bf/root/upgrade.crake/HEAD/converted-REL9_2_STABLE-to-HEAD.sql.fixed	2024-10-29 13:40:01.780445460 -0400
@@ -206462,12 +206462,12 @@ 1997-02-14 20:32:01-05 1997-02-15 20:32:01-05 1997-02-16 20:32:01-05
-0097-02-16 20:32:01-05 BC
-0097-02-16 20:32:01-05
-0597-02-16 20:32:01-05
-1097-02-16 20:32:01-05
-1697-02-16 20:32:01-05
-1797-02-16 20:32:01-05
+0097-02-16 20:35:59-04:56:02 BC
+0097-02-16 20:35:59-04:56:02
+0597-02-16 20:35:59-04:56:02
+1097-02-16 20:35:59-04:56:02
+1697-02-16 20:35:59-04:56:02
+1797-02-16 20:35:59-04:56:02 1897-02-16 20:32:01-05 1997-02-16 20:32:01-05 2097-02-16 20:32:01-05


cheers

andrew

Re: pgsql: Update time zone data files to tzdata release 2024b.

From
Tom Lane
Date:
Andrew Dunstan <andrew@dunslane.net> writes:
> Crake doesn't seem to like this for cross version upgrade, and the diff
> looks rather odd:

Oh, that's annoying.  I forgot to mention the side-effects that 2024b
had on PST8PDT and other SysV-derived timezones (probably because Paul
Eggert avoided mentioning that in his release notes ... thanks for
nothing Paul).  What we've got there is that sufficiently old
timestamps (pre 1890 or so) are now interpreted as local mean solar
time for Los Angeles rather than exactly UTC-8.

I would expect that the upgrade tests would pass now for upgrades
from v12 or later, thanks to b8ea0f675 et al, but I'm not real
sure what to do about testing the out-of-support branches.  Should
we back-patch b8ea0f675 as far down as 9.2?

            regards, tom lane



Re: pgsql: Update time zone data files to tzdata release 2024b.

From
Andrew Dunstan
Date:


> On Oct 29, 2024, at 5:41 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>
> Andrew Dunstan <andrew@dunslane.net> writes:
>> Crake doesn't seem to like this for cross version upgrade, and the diff
>> looks rather odd:
>
> Oh, that's annoying.  I forgot to mention the side-effects that 2024b
> had on PST8PDT and other SysV-derived timezones (probably because Paul
> Eggert avoided mentioning that in his release notes ... thanks for
> nothing Paul).  What we've got there is that sufficiently old
> timestamps (pre 1890 or so) are now interpreted as local mean solar
> time for Los Angeles rather than exactly UTC-8.
>
> I would expect that the upgrade tests would pass now for upgrades
> from v12 or later, thanks to b8ea0f675 et al, but I'm not real
> sure what to do about testing the out-of-support branches.  Should
> we back-patch b8ea0f675 as far down as 9.2?
>
>

Or fix/remove the problem rows in AdjustUpgrade.pm I guess

Cheers

Andrew


Re: pgsql: Update time zone data files to tzdata release 2024b.

From
Tom Lane
Date:
Andrew Dunstan <andrew@dunslane.net> writes:
> On Oct 29, 2024, at 5:41 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> I would expect that the upgrade tests would pass now for upgrades
>> from v12 or later, thanks to b8ea0f675 et al, but I'm not real
>> sure what to do about testing the out-of-support branches.  Should
>> we back-patch b8ea0f675 as far down as 9.2?

> Or fix/remove the problem rows in AdjustUpgrade.pm I guess

I went to try to test this locally, and got nowhere, because:

    old cluster does not use data checksums but the new one does
    Failure, exiting

What have you done to get around that on crake?

            regards, tom lane



Re: pgsql: Update time zone data files to tzdata release 2024b.

From
Andrew Dunstan
Date:


On Wed, Oct 30, 2024 at 11:00 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Andrew Dunstan <andrew@dunslane.net> writes:
> On Oct 29, 2024, at 5:41 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> I would expect that the upgrade tests would pass now for upgrades
>> from v12 or later, thanks to b8ea0f675 et al, but I'm not real
>> sure what to do about testing the out-of-support branches.  Should
>> we back-patch b8ea0f675 as far down as 9.2?

> Or fix/remove the problem rows in AdjustUpgrade.pm I guess

I went to try to test this locally, and got nowhere, because:

        old cluster does not use data checksums but the new one does
        Failure, exiting

What have you done to get around that on crake?

                       



I did this:


I was intending to push a new client release with it but things got kinda screwy the last 10 days. I will try to push it out later this week.

Meanwhile I think you should see the same result without this issue if you test using v17 or earlier  instead of master.

cheers

andrew

Re: pgsql: Update time zone data files to tzdata release 2024b.

From
Tom Lane
Date:
Andrew Dunstan <andrew@dunslane.net> writes:
> On Wed, Oct 30, 2024 at 11:00 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> I went to try to test this locally, and got nowhere, because:
>>     old cluster does not use data checksums but the new one does
>>     Failure, exiting
>> What have you done to get around that on crake?

> I did this:
> https://github.com/PGBuildFarm/client-code/commit/2ef5acefe5e6eee761ea2ee010c3d14e2d8fab60

Ah, thanks.  I installed that locally, and got

...
tester:HEAD          [16:25:31] saving files for cross-version upgrade check
tester:HEAD          [16:25:33] checking upgrade from REL9_2_STABLE to HEAD ...
tester:HEAD          [16:25:53] checking upgrade from REL_11_STABLE to HEAD ...
tester:HEAD          [16:26:31] checking upgrade from REL_12_STABLE to HEAD ...
tester:HEAD          [16:27:08] checking upgrade from REL_13_STABLE to HEAD ...
tester:HEAD          [16:27:46] checking upgrade from REL_14_STABLE to HEAD ...
tester:HEAD          [16:28:26] checking upgrade from REL_15_STABLE to HEAD ...
tester:HEAD          [16:29:05] checking upgrade from REL_16_STABLE to HEAD ...
tester:HEAD          [16:29:47] checking upgrade from HEAD to HEAD ...
tester:HEAD          [16:30:32] running make ecpg check ...
tester:HEAD          [16:30:40] OK

(This client instance doesn't have back-branch runs for v9.3--v10.)

So now I'm even more confused.  Why does it work here and not there?
I can't think of any buildfarm options that would affect this.

            regards, tom lane



Re: pgsql: Update time zone data files to tzdata release 2024b.

From
Andrew Dunstan
Date:


On Wed, Oct 30, 2024 at 4:53 PM Andrew Dunstan <andrew@dunslane.net> wrote:


On Wed, Oct 30, 2024 at 4:33 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Andrew Dunstan <andrew@dunslane.net> writes:
> On Wed, Oct 30, 2024 at 11:00 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> I went to try to test this locally, and got nowhere, because:
>>      old cluster does not use data checksums but the new one does
>>      Failure, exiting
>> What have you done to get around that on crake?

> I did this:
> https://github.com/PGBuildFarm/client-code/commit/2ef5acefe5e6eee761ea2ee010c3d14e2d8fab60

Ah, thanks.  I installed that locally, and got

...
tester:HEAD          [16:25:31] saving files for cross-version upgrade check
tester:HEAD          [16:25:33] checking upgrade from REL9_2_STABLE to HEAD ...
tester:HEAD          [16:25:53] checking upgrade from REL_11_STABLE to HEAD ...
tester:HEAD          [16:26:31] checking upgrade from REL_12_STABLE to HEAD ...
tester:HEAD          [16:27:08] checking upgrade from REL_13_STABLE to HEAD ...
tester:HEAD          [16:27:46] checking upgrade from REL_14_STABLE to HEAD ...
tester:HEAD          [16:28:26] checking upgrade from REL_15_STABLE to HEAD ...
tester:HEAD          [16:29:05] checking upgrade from REL_16_STABLE to HEAD ...
tester:HEAD          [16:29:47] checking upgrade from HEAD to HEAD ...
tester:HEAD          [16:30:32] running make ecpg check ...
tester:HEAD          [16:30:40] OK

(This client instance doesn't have back-branch runs for v9.3--v10.)

So now I'm even more confused.  Why does it work here and not there?
I can't think of any buildfarm options that would affect this.



My 9.2 saved instance is quite old ... Nov 2018.

But I don't see why that should affect it, so I'm confused too.



Further data point - drongo and fairywren are not showing this issue.


cheers

andrew 

Re: pgsql: Update time zone data files to tzdata release 2024b.

From
Tom Lane
Date:
Andrew Dunstan <andrew@dunslane.net> writes:
> On Wed, Oct 30, 2024 at 4:53 PM Andrew Dunstan <andrew@dunslane.net> wrote:
>> My 9.2 saved instance is quite old ... Nov 2018.
>> But I don't see why that should affect it, so I'm confused too.

> Further data point - drongo and fairywren are not showing this issue.

My 9.2 reference instance is relatively new, from Mar 2024.

I tried looking at the relevant data in the saved dump:

$ grep 1697-02 upgrade.tester/REL9_2_STABLE/origin-REL9_2_STABLE.sql
1697-02-16 17:32:01
1697-02-16 20:35:59-04:56:02

(The first match is presumably out of timestamp_tbl, the second
out of timestamptz_tbl.)  It's the same in the saved dumps for
later versions too, which is why I'm not getting upgrade test
failures.  But how come?

After contemplating this for awhile, I thought of the beginnings
of an explanation: pg_regress selects the test timezone by
setting environment variable PGTZ, not by using ALTER DATABASE SET
or anything like that.  So the effects extend only to the
regression test runs themselves, and if you look at the contents
of the regression database afterwards, data will be shown
according to your default timezone established by initdb.
In particular, if we run pg_dump without taking any special care,
we'll get timestamps dumped in the initdb-determined zone.

So the reason I'm not seeing a failure is that my dumps were
all taken under my system's default zone, America/New_York,
which would report this timestamp value as '20:35:59-04:56:02'
and has done so for a long time.  I speculate that on crake,
the system timezone changed sometime since you made that 2018
dump.  If it had changed from a SysV zone like PST8PDT to one of
the modern geographical zones, that would fit the symptoms.
However, I see in crake's initdb tests

selecting default time zone ... EST5EDT

and I see crake claims to be on Fedora 40, which has not adopted
tzdata 2024b yet (at least, it hasn't here), so the fact that
EST5EDT will change behavior whenever that does happen should
not be relevant yet.  So I'm fuzzy about the exact details of
what has happened on crake, but I'm pretty sure that it boils
down to "the dump timezone changed since 2018".

I'm inclined to propose that we should modify the pg_upgrade test
so that it forces the comparison dumps to be taken with PGTZ=UTC,
thereby taking system-timezone changes out of the picture.  This'd
require remaking the old comparison dumps on (most?) upgrade-testing
animals, of course.  In the meantime you could probably make crake
happy by forcing re-runs of the old branches.

            regards, tom lane



Re: pgsql: Update time zone data files to tzdata release 2024b.

From
Tom Lane
Date:
I wrote:
> ... So I'm fuzzy about the exact details of
> what has happened on crake, but I'm pretty sure that it boils
> down to "the dump timezone changed since 2018".

Oh ... never mind, I was thinking in terms of what would happen
with --use-system-timezone, but of course the buildfarm doesn't
build that way.

So the problem is precisely that *our* interpretation of EST5EDT
changed when we adopted tzdata 2024b, and that is affecting how
we dump these old timestamps.  Or at least, that seems like what
should be happening, but then why is only crake showing a failure?

> I'm inclined to propose that we should modify the pg_upgrade test
> so that it forces the comparison dumps to be taken with PGTZ=UTC,
> thereby taking system-timezone changes out of the picture.

Whatever the details exactly, this still seems like a good
future-proof fix.  I'm not quite sure where we need to make the change
though --- if I edit pg_upgrade/t/002_pg_upgrade.pl, will that affect
how the buildfarm tests these things, or is it different code?

            regards, tom lane



Re: pgsql: Update time zone data files to tzdata release 2024b.

From
Tom Lane
Date:
I wrote:
> So the problem is precisely that *our* interpretation of EST5EDT
> changed when we adopted tzdata 2024b, and that is affecting how
> we dump these old timestamps.  Or at least, that seems like what
> should be happening, but then why is only crake showing a failure?

Oh, got it: of the machines in question, only crake is selecting
EST5EDT as default timezone.  I can see from the buildfarm logs
that drongo and fairywren are using UTC, and as said, my test
instance is selecting America/New_York.  Both UTC and America/New_York
would have rendered these old timestamps the same way all along,
but EST5EDT just changed its interpretation of them.

That means that simply forcing a re-run of the old branches on
crake won't fix it, because pre-v12 branches will still think
that EST5EDT means what it used to.  We need to make sure that
the dumps are taken in a completely stable zone, i.e. UTC.

            regards, tom lane



Re: pgsql: Update time zone data files to tzdata release 2024b.

From
Andrew Dunstan
Date:


On Wed, Oct 30, 2024 at 7:20 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
I wrote:
> So the problem is precisely that *our* interpretation of EST5EDT
> changed when we adopted tzdata 2024b, and that is affecting how
> we dump these old timestamps.  Or at least, that seems like what
> should be happening, but then why is only crake showing a failure?

Oh, got it: of the machines in question, only crake is selecting
EST5EDT as default timezone.  I can see from the buildfarm logs
that drongo and fairywren are using UTC, and as said, my test
instance is selecting America/New_York.  Both UTC and America/New_York
would have rendered these old timestamps the same way all along,
but EST5EDT just changed its interpretation of them.

That means that simply forcing a re-run of the old branches on
crake won't fix it, because pre-v12 branches will still think
that EST5EDT means what it used to.  We need to make sure that
the dumps are taken in a completely stable zone, i.e. UTC.

                       

Yep, I rebuilt all those old branches using 'America/New_York" and we're back to green. Thanks for the diagnosis.

cheers

andrew