• Tom Lane's avatar
    Fix to_char() to use ASCII-only case-folding rules where appropriate. · 80b011ef
    Tom Lane authored
    formatting.c used locale-dependent case folding rules in some code paths
    where the result isn't supposed to be locale-dependent, for example
    to_char(timestamp, 'DAY').  Since the source data is always just ASCII
    in these cases, that usually didn't matter ... but it does matter in
    Turkish locales, which have unusual treatment of "i" and "I".  To confuse
    matters even more, the misbehavior was only visible in UTF8 encoding,
    because in single-byte encodings we used pg_toupper/pg_tolower which
    don't have locale-specific behavior for ASCII characters.  Fix by providing
    intentionally ASCII-only case-folding functions and using these where
    appropriate.  Per bug #7913 from Adnan Dursun.  Back-patch to all active
    branches, since it's been like this for a long time.
    80b011ef
formatting.c 127 KB