Thread: pgsql: ICU: do not convert locale 'C' to 'en-US-u-va-posix'.
ICU: do not convert locale 'C' to 'en-US-u-va-posix'. Older versions of ICU canonicalize "C" to "en-US-u-va-posix"; but starting in ICU version 64, the "C" locale is considered obsolete. Postgres commit ea1db8ae70 introduced code to always canonicalize "C" to "en-US-u-va-posix" for consistency and convenience, but it was deemed too confusing. This commit removes that code, so that "C" is treated like other ICU locale names: canonicalization is attempted, and if it fails, the behavior is controlled by icu_validation_level. A similar change was previously committed as f7faa9976c, then reverted due to an ICU-version-dependent test failure. This commit un-reverts it, omitting the test because we now expect the behavior to depend on the version of ICU being used. Discussion: https://postgr.es/m/3a200aca-4672-4b37-fc91-5d198a323503%40eisentraut.org Discussion: https://postgr.es/m/f83f089ee1e9acd5dbbbf3353294d24e1f196e95.camel@j-davis.com Discussion: https://postgr.es/m/37520ec1ae9591f83132f82dbd625f3fc2d69c16.camel@j-davis.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/f3a01af29b1941ca7937a45504ab10ef5f99cdff Modified Files -------------- src/backend/utils/adt/pg_locale.c | 19 +------------------ src/bin/initdb/initdb.c | 17 +---------------- src/test/regress/expected/collate.icu.utf8.out | 2 ++ src/test/regress/sql/collate.icu.utf8.sql | 2 ++ 4 files changed, 6 insertions(+), 34 deletions(-)