• Heikki Linnakangas's avatar
    Work around Windows locale name with non-ASCII character. · db29620d
    Heikki Linnakangas authored
    Windows has one a locale whose name contains a non-ASCII character:
    "Norwegian (Bokmål)" (that's an 'a' with a ring on top). That causes
    trouble; when passing it setlocale(), it's not clear what encoding the
    argument should be in. Another problem is that the locale name is stored in
    pg_database catalog table, and the encoding used there depends on what
    server encoding happens to be in use when the database is created. For
    example, if you issue the CREATE DATABASE when connected to a UTF-8
    database, the locale name is stored in pg_database in UTF-8. As long as all
    locale names are pure ASCII, that's not a problem.
    
    To work around that, map the troublesome locale name to a pure-ASCII alias
    of the same locale, "norwegian-bokmal".
    
    Now, this doesn't change the existing values that are already in
    pg_database and in postgresql.conf. Old clusters will need to be fixed
    manually. Instructions for that need to be put in the release notes.
    
    This fixes bug #11431 reported by Alon Siman-Tov. Backpatch to 9.2;
    backpatching further would require more work than seems worth it.
    db29620d
win32setlocale.c 5.57 KB