On Tue, Jul 23, 2024 at 1:58 PM Dave Page <dave.p...@enterprisedb.com>
wrote:

>
>
> On Tue, Jul 23, 2024 at 1:27 AM Thomas Munro <thomas.mu...@gmail.com>
> wrote:
>
>> On Mon, Jul 22, 2024 at 11:51 PM Sandeep Thakkar
>> <sandeep.thak...@enterprisedb.com> wrote:
>> > EDB's windows installer gets the locales on the system using the
>> https://github.com/EnterpriseDB/edb-installers/blob/REL-16/server/scripts/windows/getlocales/getlocales.cpp
>> and then substitute some patterns (
>> https://github.com/EnterpriseDB/edb-installers/blob/REL-16/server/pgserver.xml.in#L2850)
>> I'm not sure why we do that but that is the old code and probably @Dave
>> Page  may know but I'm not sure if that piece of code is responsible for
>> this change in encoding in this case.
>>
>> Ah, so it's calling EnumSystemLocales().  Interestingly, the
>> documentation for that function says:
>>
>> "Note  For interoperability reasons, the application should prefer the
>> EnumSystemLocalesEx function to EnumSystemLocales because Microsoft is
>> migrating toward the use of locale names instead of locale identifiers
>> for new locales. Any application that will be run only on Windows
>> Vista and later should use EnumSystemLocalesEx."
>>
>> That seems to be talking about this exact issue, that we're supposed
>> to be using "locale names".  I'm a little confused about the
>> terminology for the various types of names and identifiers but if you
>> follow the link to a example program[1] you can see that it's talking
>> about the BCP47 "en-US" kind, that we want.  (That quote makes it
>> sound like a new thing, but Vista came out ~17 years ago.)
>>
>
> Vista is when they added support for BCP47, but of course, back when that
> code was written we were primarily supporting older versions of Windows
> still, back to Windows 2000 iirc.
>
>
yes, that's right. In existing branches, will replacing
the EnumSystemLocales()
with EnumSystemLocalesEx() plus the source code path being worked upon by
Thomas fix the issue? Can give it a try

>
>> So one idea would be that in v18, we not only change initdb.exe to
>> pick a BCP47 locale name by default as I proposed in that other
>> thread[2], but also in the v18 version of the EDB installer you
>> consider switching that code over to EnumSystemLocalesEx().  Then we
>> can start to kiss goodbye to the bad old names.  People would still
>> propagate them into the future with pg_upgrade I guess, and it'd be up
>> to users to replace them by updating their catalogs manually.  Does
>> that make sense?
>>
>
> Yes, it does (spitballing: might be nice if we could automatically update
> the catalogs as well).
>
> --
> Dave Page
> VP, Chief Architect, Database Infrastructure
> EDB: https://www.enterprisedb.com
>
>

-- 
Sandeep Thakkar

Reply via email to