Re: Order changes in PG16 since ICU introduction
Daniel Verite <daniel@manitou-mail.org>
Jeff Davis wrote: > As I replied in that subthread, that creates a worse problem: if you > only change the provider when the locale is C, then what about when the > locale is *not* C? > > export LANG=en_US.UTF-8 > initdb -D data --locale=fr_FR.UTF-8 > ... > provider: icu > ICU locale: en-US What you're proposing with the 0003 patch still applies. In the above case I think we would end up with: provider=icu ICU locale=fr-FR lc_collate=fr_FR.UTF-8 lc_lctype=fr_FR.UTF-8 which is reasonable. In the following cases we would initialize a libc cluster instead of an ICU cluster: - initdb --locale=C - initdb --locale=POSIX - LANG=C initdb - LANG=C.UTF-8 initdb - LANG=POSIX initdb - ... possibly other locales that we find are unsuitable for ICU That is, the rule "ICU by default" really means "ICU unless the locale that we're being passed or getting from the environment has semantics that ICU does not provide but we know libc provides, in which case we fall back to libc". The user who wants ICU imperatively should invoke --icu-locale=something or --locale=something --locale-provider=icu in which case we should not fallback to libc. We still have to determine lc_collate and lc_ctype either from the environment or from the locale argument (I think we should favor the environment), except if the user specifies --lc-collate=... lc-ctype=... Best regards, -- Daniel Vérité https://postgresql.verite.pro/ Twitter: @DanielVerite
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Introduce "builtin" collation provider.
- 2d819a08a1cb 17.0 landed
-
ICU: do not convert locale 'C' to 'en-US-u-va-posix'.
- f3a01af29b19 16.0 landed
- f7faa9976cc0 16.0 landed
-
initdb: change default --locale-provider back to libc.
- 2535c74b1a61 16.0 landed
-
CREATE DATABASE: make LOCALE apply to all collation providers.
- a14e75eb0b6a 16.0 landed
-
Remove read-only server settings lc_collate and lc_ctype
- b0f6c437160d 16.0 landed
-
ICU: use uloc_getDefault() for initdb.
- ec1264f01e37 16.0 landed
-
Doc fixes for commit 1e16af8ab5.
- f4a9422c0c37 16.0 landed
-
Doc: fix some rendering problems in the PDF docs build.
- b62381d9a23b 16.0 landed
-
Doc improvements for language tags and custom ICU collations.
- 1e16af8ab5d7 16.0 landed
-
ICU: check for U_STRING_NOT_TERMINATED_WARNING.
- 1c634f6647c2 16.0 landed
-
Reduce icu_validation_level default to WARNING.
- 6de31ce446e5 16.0 landed
-
Revert "ICU: do not convert locale 'C' to 'en-US-u-va-posix'."
- 455f948b0d03 16.0 landed
-
Fix initdb --no-locale.
- 5cd1a5af4d17 16.0 landed
-
Avoid character classification in regex escape parsing.
- c04c6c5d6f5f 16.0 cited