Reposting this here from the Discord server as requested:

When creating a collation, in 
https://github.com/postgres/postgres/blob/master/src/backend/utils/adt/pg_locale_icu.c#L461
 it is opening the collator with the tailoring rules supplied. However, it has 
hardcoded the strength level UCOL_DEFAULT_STRENGTH. This has the effect of 
ignoring the "deterministic=false" you may have specified in your CREATE 
COLLATION call. If, instead of UCOL_DEFAULT_STRENGTH, the code understood the 
deterministic parameter and passed either UCOL_PRIMARY for 
"deterministic=true", and UCOL_SECONDARY for "deterministic=false", this would 
preserve the attempt to obtain case-insensitivity in the locale while 
simultaneously allowing tailoring as expected.

I have made the modification to the pg_locale_icu.c and tested it locally 
(simply hardcoding UCOL_SECONDARY - not checking the deterministic parameter) 
and it behaves as expected, though I freely admit my knowledge of ICU 
intersecting with Postgres is rather limited.

Reply via email to