Re: Order changes in PG16 since ICU introduction

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Jeff Davis <pgsql@j-davis.com>, Daniel Verite <daniel@manitou-mail.org>
Cc: Andrew Gierth <andrew@tao11.riddles.org.uk>, Tom Lane <tgl@sss.pgh.pa.us>, pgsql-hackers@lists.postgresql.org
Date: 2023-06-07T21:59:59Z
Lists: pgsql-hackers
On 05.06.23 19:54, Jeff Davis wrote:
> 
> New patch series attached. I plan to commit 0001 and 0002 soon, unless
> there are objections.
> 
> 0001 causes the "C" and "POSIX" locales to be treated with
> memcmp/pg_ascii semantics in ICU, just like in libc. We also considered
> a new "none" provider, but it's more invasive, and we can always
> reconsider that in the v17 cycle.
> 
> 0002 introduces an upgrade check for users who have explicitly
> requested provider=icu and iculocale=C on older versions, and rejects
> upgrading from v15 in that case to avoid index corruption. Having such
> a collation is almost certainly a mistake by the user, because the
> collator would not give the expected memcmp semantics.

I'm dubious about these two.

0003 seems like the correct direction.  In createdb.c, the change you 
add makes sense, but you should also remove the existing use of the 
locale variable:

-   if (locale)
-   {
-       if (!lc_ctype)
-           lc_ctype = locale;
-       if (!lc_collate)
-           lc_collate = locale;
-   }
-




Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Introduce "builtin" collation provider.

  2. ICU: do not convert locale 'C' to 'en-US-u-va-posix'.

  3. initdb: change default --locale-provider back to libc.

  4. CREATE DATABASE: make LOCALE apply to all collation providers.

  5. Remove read-only server settings lc_collate and lc_ctype

  6. ICU: use uloc_getDefault() for initdb.

  7. Doc fixes for commit 1e16af8ab5.

  8. Doc: fix some rendering problems in the PDF docs build.

  9. Doc improvements for language tags and custom ICU collations.

  10. ICU: check for U_STRING_NOT_TERMINATED_WARNING.

  11. Reduce icu_validation_level default to WARNING.

  12. Revert "ICU: do not convert locale 'C' to 'en-US-u-va-posix'."

  13. Fix initdb --no-locale.

  14. Avoid character classification in regex escape parsing.