Re: ICU locale validation / canonicalization
Peter Eisentraut <peter.eisentraut@enterprisedb.com>
On 22.03.23 19:05, Jeff Davis wrote: > On Tue, 2023-03-21 at 10:35 +0100, Peter Eisentraut wrote: >> [PATCH v6 1/6] Support language tags in older ICU versions (53 and >> earlier). >> >> In pg_import_system_collations(), this is now redundant and can be >> simplified: >> >> - if (!pg_is_ascii(langtag) || !pg_is_ascii(iculocstr)) >> + if (!pg_is_ascii(langtag) || !pg_is_ascii(langtag)) >> >> icu_set_collation_attributes() needs more commenting about what is >> going >> on. My guess is that uloc_canonicalize() converts from language tag >> to >> ICU locale ID, and then the existing logic to parse that apart would >> apply. Is that how it works? > > Fixed the redundancy, added some comments, and committed 0001. So, does uloc_canonicalize() always convert to ICU locale IDs? What if you pass a language tag, does it convert it to ICU locale ID as well? >> [PATCH v6 2/6] Wrap ICU ucol_open(). > So I'm inclined to just leave initdb alone in patches 0002 and 0003. 0002 and 0003 look ok to me now. In 0002, the error "opening default collator is not supported", should that be an assert or an elog? Is it reachable by the user? You might want to check the declarations at the top of pg_ucol_open(). 0003 reformats them after they were just added in 0002. Maybe check that they are pgindent'ed in 0002 properly. I don't understand patch 0004. It seems to do two things, handle C/POSIX locale specifications and add an SQL-callable function. Are those connected?
Commits
-
Add missing source file to nls.mk
- b8c3f6df85e7 16.0 cited
-
Fix MSVC warning introduced in ea1db8ae70.
- 36320cbc164a 16.0 landed
-
Canonicalize ICU locale names to language tags.
- ea1db8ae70e5 16.0 landed
-
Validate ICU locales.
- 1671f990dd66 16.0 landed
-
initdb: emit message when using default ICU locale.
- c1f1c1f87fd6 16.0 landed
-
initdb: replace check_icu_locale() with default_icu_locale().
- f8ca22295e99 16.0 landed
-
Fix error inconsistency in older ICU versions.
- 8b3eb0c584be 16.0 landed
-
Avoid potential UCollator leak for older ICU versions.
- a03b3b6b4a72 16.0 landed
-
pg_locale.c: change ereport() to elog().
- 9a242899158c 16.0 landed
-
Handle the "und" locale in ICU versions 54 and older.
- 3b50275b1295 16.0 landed
-
Wrap ICU ucol_open().
- a326aac8f171 16.0 landed
-
Support language tags in older ICU versions (53 and earlier).
- 869650fa86ad 16.0 landed
-
Improve support for UNICODE collation on older ICU
- d72900bdedc6 16.0 cited
-
Use ICU by default at initdb time.
- 27b62377b47f 16.0 cited