• Heikki Linnakangas's avatar
    Another attempt at fixing Windows Norwegian locale. · aa1d2fc5
    Heikki Linnakangas authored
    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).
    aa1d2fc5
win32setlocale.c 5.75 KB