mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-06 15:24:56 +08:00
Tolerate version lookup failure for old style Windows locale names.
Accept that we can't get versions for such locale names for now. Users will need to specify the newer language tag format to enable the collation versioning feature. It's not clear that we can do automatic conversion from the old style to the new style reliably enough for this purpose. Unfortunately, this means that collation versioning probably won't work for the default collation unless you provide something like en-US at initdb or CREATE DATABASE time (though, for reasons not yet understood, it does seem to work on some systems). It'd be nice to find a better solution, or document this quirk if we settle on it, but this should unbreak the 3 failing build farm animals in the meantime. Reviewed-by: David Rowley <dgrowleyml@gmail.com> Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://postgr.es/m/CAEepm%3D0uEQCpfq_%2BLYFBdArCe4Ot98t1aR4eYiYTe%3DyavQygiQ%40mail.gmail.com
This commit is contained in:
parent
e152506ade
commit
9f12a3b95d
@ -1702,10 +1702,22 @@ get_collation_actual_version(char collprovider, const char *collcollate)
|
||||
MultiByteToWideChar(CP_ACP, 0, collcollate, -1, wide_collcollate,
|
||||
LOCALE_NAME_MAX_LENGTH);
|
||||
if (!GetNLSVersionEx(COMPARE_STRING, wide_collcollate, &version))
|
||||
{
|
||||
/*
|
||||
* GetNLSVersionEx() wants a language tag such as "en-US", not a
|
||||
* locale name like "English_United States.1252". Until those
|
||||
* values can be prevented from entering the system, or 100%
|
||||
* reliably converted to the more useful tag format, tolerate the
|
||||
* resulting error and report that we have no version data.
|
||||
*/
|
||||
if (GetLastError() == ERROR_INVALID_PARAMETER)
|
||||
return NULL;
|
||||
|
||||
ereport(ERROR,
|
||||
(errmsg("could not get collation version for locale \"%s\": error code %lu",
|
||||
collcollate,
|
||||
GetLastError())));
|
||||
}
|
||||
collversion = psprintf("%d.%d,%d.%d",
|
||||
(version.dwNLSVersion >> 8) & 0xFFFF,
|
||||
version.dwNLSVersion & 0xFF,
|
||||
|
Loading…
Reference in New Issue
Block a user