Skip to content
Snippets Groups Projects
Commit aa1d2fc5 authored by Heikki Linnakangas's avatar Heikki Linnakangas
Browse files

Another attempt at fixing Windows Norwegian locale.

Previous fix mapped "Norwegian (Bokmål)" locale, which contains a non-ASCII
character, to the pure ASCII alias "norwegian-bokmal". However, it turns
out that more recent versions of the CRT library, in particular MSVCR110
(Visual Studio 2012), changed the behaviour of setlocale() so that if
you pass "norwegian-bokmal" to setlocale, it returns "Norwegian_Norway".

That meant trouble, when setlocale(..., NULL) first returned
"Norwegian (Bokmål)_Norway", which we mapped to "norwegian-bokmal_Norway",
but another call to setlocale(..., "norwegian-bokmal_Norway") returned
"Norwegian_Norway". That caused PostgreSQL to think that they are different
locales, and therefore not compatible. That caused initdb to fail at
CREATE DATABASE.

Older CRT versions seem to accept "Norwegian_Norway" too, so change the
mapping to return "Norwegian_Norway" instead of "norwegian-bokmal".

Backpatch to 9.2 like the previous attempt. We haven't made a release that
includes the previous fix yet, so we don't need to worry about changing the
locale of existing clusters from "norwegian-bokmal" to "Norwegian_Norway".
(Doing any mapping like this at all requires changing the locale of
existing databases; the release notes need to include instructions for
that).
parent 28df6a0d
Branches
Tags
No related merge requests found
...@@ -97,7 +97,7 @@ static const struct locale_map locale_map_result[] = { ...@@ -97,7 +97,7 @@ static const struct locale_map locale_map_result[] = {
* It's not clear what encoding setlocale() uses when it returns the * It's not clear what encoding setlocale() uses when it returns the
* locale name, so to play it safe, we search for "Norwegian (Bok*l)". * locale name, so to play it safe, we search for "Norwegian (Bok*l)".
*/ */
{"Norwegian (Bokm", "l)", "norwegian-bokmal"}, {"Norwegian (Bokm", "l)_Norway", "Norwegian_Norway"},
{NULL, NULL, NULL} {NULL, NULL, NULL}
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment