From: ROSESOFT S. Hoffmann <sh@rosesoft.de>
To: Thomas Munro <thomas.munro@gmail.com>
Cc: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Cc: pgsql-bugs@lists.postgresql.org <pgsql-bugs@lists.postgresql.org>
Subject: AW: PostgreSQL 10 initdb with locale de-x-icu fails on Windows Server 2012
Date: Tue, 5 Jul 2022 13:29:10 +0000
Message-ID: <a2505775e6034bd4be8d4f50f0455a26@rosesoft.de> (raw)
In-Reply-To: <CA+hUKGLFcYKF2sCsaBqX-VWDdvU0XDcSm3wqji2E_CU22io80Q@mail.gmail.com>
References: <62310c8c50c74861b80d908310f8a880@rosesoft.de>
<20220704.093405.1243358043142197360.horikyota.ntt@gmail.com>
<dcc0c45752a2485099c4d2608e0b6086@rosesoft.de>
<CA+hUKGJacQm3y20tCkh6D4_3h17DhZWmnc+CqA_PCwT+D8LgkA@mail.gmail.com>
<CA+hUKGLFcYKF2sCsaBqX-VWDdvU0XDcSm3wqji2E_CU22io80Q@mail.gmail.com>
Hello Thomas,
> Windows 10 built in ICU support
I thought all ICU stuff was built in PostgreSQL binaries and DLLs, but your explanation seems to be the cause of this problem.
> ancient Windows
This sounds like using default-collation "de" for initdb and createdb has the same effect as "de-x-icu" with PostgreSQL 10 up to 14?
Should we then use default-collation "de" instead of "de-x-icu" or "German_Germany.1252" or could this cause problems later when upgrading to PostgreSQL 15 or 16 and using "de-x-icu" as default-collation?
Regards, Stefan.
-----Ursprüngliche Nachricht-----
Von: Thomas Munro <thomas.munro@gmail.com>
Gesendet: Dienstag, 5. Juli 2022 10:19
An: ROSESOFT S. Hoffmann <sh@rosesoft.de>
Cc: Kyotaro Horiguchi <horikyota.ntt@gmail.com>; pgsql-bugs@lists.postgresql.org
Betreff: Re: PostgreSQL 10 initdb with locale de-x-icu fails on Windows Server 2012
On Tue, Jul 5, 2022 at 7:22 PM Thomas Munro <thomas.munro@gmail.com> wrote:
> On Mon, Jul 4, 2022 at 11:53 PM ROSESOFT S. Hoffmann <sh@rosesoft.de> wrote:
> > On Windows Server 2016/2019/2022 and Windows 10/11 the ICU-Options work as expected!
> > Why does the problem only occurs on Windows Server 2012?
>
> Windows 10 and later contain a copy of ICU inside them. That's why
> strings like "de", "de-CH" etc work there: PostgreSQL is using the
> normal Windows collation API (it's a bit weird that we call it "libc"
> mode, when it's not exactly libc, but what we mean by that is the OS's
> native collations...). So I think it is probably Windows' internal
> copy of ICU that receives that name "de-..." and ignores the trailing
> part that it doesn't understand.
Oh, it might also be that ancient Windows can also understand "de-DE"
or "de" too, but not "de-x-icu"? That "de-x-icu" name is an internal PostgreSQL convention for collation identifiers and shouldn't be passed to initdb. If that's the case it might just be that the ICU-based versions of Windows are more tolerant, and interpret "de-x-icu" as "de", ignoring the rest, but the ancient versions reject it?
(I have no access to old Windows, I just read that even Vista could understand de-DE type names, formally known as BCP47, in some contexts... it just wasn't using ICU yet).
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-bugs@postgresql.org
Cc: sh@rosesoft.de, thomas.munro@gmail.com, horikyota.ntt@gmail.com, pgsql-bugs@lists.postgresql.org
Subject: Re: AW: PostgreSQL 10 initdb with locale de-x-icu fails on Windows Server 2012
In-Reply-To: <a2505775e6034bd4be8d4f50f0455a26@rosesoft.de>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox