ICU: do not convert locale 'C' to 'en-US-u-va-posix'.
authorJeff Davis <[email protected]>
Wed, 21 Jun 2023 20:18:25 +0000 (13:18 -0700)
committerJeff Davis <[email protected]>
Wed, 21 Jun 2023 20:18:25 +0000 (13:18 -0700)
commitf3a01af29b1941ca7937a45504ab10ef5f99cdff
tree5211872fb7921674ddfeb0873689983fed80eaea
parent2535c74b1a6190cc42e13f6b6b55d94bff4b7dd6
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[email protected]
Discussion: https://postgr.es/m/37520ec1ae9591f83132f82dbd625f3fc2d69c16[email protected]
src/backend/utils/adt/pg_locale.c
src/bin/initdb/initdb.c
src/test/regress/expected/collate.icu.utf8.out
src/test/regress/sql/collate.icu.utf8.sql