Re: Collation versioning

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Thomas Munro <thomas.munro@gmail.com>
Cc: Julien Rouhaud <rjuju123@gmail.com>, Peter Eisentraut <peter.eisentraut@2ndquadrant.com>, Michael Paquier <michael@paquier.xyz>, Robert Haas <robertmhaas@gmail.com>, Laurenz Albe <laurenz.albe@cybertec.at>, Douglas Doole <dougdoole@gmail.com>, Christoph Berg <myon@debian.org>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2020-11-02T17:51:39Z
Lists: pgsql-hackers
Thomas Munro <thomas.munro@gmail.com> writes:
> Hmm, a failure from dory (WIndows) during pg_upgrade:

> performing post-bootstrap initialization ... 2020-11-02 08:08:22.213
> EST [5392] FATAL:  could not get collation version for locale
> "English_United States.1252": error code 87

> 87 means invalid parameter.  I'm surprised it got through various
> other tests and then failed here.  Whelk (also Windows) passed using
> "German_Germany.1252".  Hmm.  I'll wait for more Windows systems to
> report.

drongo just did it too, and it seems repeatable on dory.  I'm not 100%
sure, but I think the buildfarm's initial "check" step may be run under C
locale while pg_upgrade sees whatever the machine's prevailing locale is.
If that's correct, it seems like the simplest explanation is just that
extraction of a collation version is busted for (some?) non-C locales on
Windows.  Could be something as dumb as spaces in the locale name
being problematic.

			regards, tom lane



Commits

  1. Doc: Document known problem with Windows collation versions.

  2. Add collation versions for FreeBSD.

  3. Tolerate version lookup failure for old style Windows locale names.

  4. Track collation versions for indexes.

  5. Add pg_depend.refobjversion.

  6. Remove pg_collation.collversion.

  7. Fix the MSVC build for versions 2015 and later.

  8. Add collation versions for Windows.

  9. Implement type regcollation

  10. Use libc version as a collation version on glibc systems.

  11. Make type "name" collation-aware.