Re: Order changes in PG16 since ICU introduction

Peter Eisentraut <peter.eisentraut@enterprisedb.com>

From: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
To: Jeff Davis <pgsql@j-davis.com>, "Jonathan S. Katz" <jkatz@postgresql.org>, Robert Haas <robertmhaas@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Regina Obe <lr@pcorp.us>, Sandro Santilli <strk@kbt.io>, pgsql-hackers@lists.postgresql.org
Date: 2023-05-22T12:27:10Z
Lists: pgsql-hackers
On 18.05.23 19:55, Jeff Davis wrote:
> On Wed, 2023-05-17 at 19:59 -0400, Jonathan S. Katz wrote:
>> I did a quicker read through this time. LGTM overall. I like what you
>> did with the explanations around sensitivity (now it makes sense).
> 
> Committed, thank you.
> 
> There are a few things I don't understand that would be good to
> document better:
> 
> * Rules. I still don't quite understand the use case: are these for
> people inventing new languages? What is a plausible use case that isn't
> covered by the existing locales and collation settings? Do rules make
> sense for a database default collation? Are they for language experts
> only or might an ordinary developer benefit from using them?

The rules are for setting whatever sort order you like.  Maybe you want 
to sort + before - or whatever.  It's like, if you don't like it, build 
your own.

> * The collation types "phonebk", "emoji", etc.: are these variants of
> particular locales, or do they make sense in multiple locales? I don't
> know where they fit in or how to document them.

The k* settings are parametric settings, in that they transform the sort 
key in some algorithmic way.  The co settings are just everything else. 
They are not parametric, they are just some other sort order that 
someone spelled out explicitly.

> * I don't understand what "kc" means if "ks" is not set to "level1".

There is an example here: 
https://peter.eisentraut.org/blog/2023/05/16/overview-of-icu-collation-settings#colcaselevel




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.