Re: ICU Collations and Collation Updates - Mailing list pgsql-general

From Laurenz Albe
Subject Re: ICU Collations and Collation Updates
Date
Msg-id d477c1faf35bad99fe550c8c4c1954ffa076ccfd.camel@cybertec.at
Whole thread Raw
In response to ICU Collations and Collation Updates  (Thomas Michael Engelke <thomas.engelke@posteo.de>)
Responses Re: ICU Collations and Collation Updates
List pgsql-general
On Mon, 2025-04-14 at 08:28 +0000, Thomas Michael Engelke wrote:
> Where I currently work my colleagues used libc collations before I
> arrived. While using libc collations, they stumbled upon the collation
> update problem after SLES updates (15.4 to 15.5) (collation version
> difference for database and operating system) (paraphrased, don't have
> the english message at the hand).
>
> For an easy solution I suggested to switch to ICU collations. While
> documenting the problem for older systems I realized that I did not
> know enough about the problem to document why ICU collations would
> solve this problem.
>
> After reading https://www.postgresql.org/docs/17/collation.html this is
> how I understand it:
>
> When initdb creates a cluster the OS available collations are copied to
> the database as database objects, listable using
>
> select * from pg_collation;
>
> Now, an OS collation update as part of the OS update will change the
> collations available on the OS level, but not the collations that the
> database uses.
>
> Is my understanding correct then in that this way the database
> collations never change, unless a manual intervention reinitialises the
> collations and reindexes the database (or appropriate indexes)? How
> does that process compare to other RDBMS?
>
> Are regular collation updates deemed unnecessary for long running
> database installations? Or do you people have maintenance workflows
> that incorporate regular collation updates to the databases?

PostgreSQL just copies the names and versions of the collations to the
catalog.  The actual collating is done by the C or ICU library.

When you update the C library or ICU library and the version changes,
you get warned by PostgreSQL and have to rebuild indexes.

So the collations can change whenever you update the respective libraries.
You would have to build PostgreSQL yourself with a fixed version of ICU
that you never upgrade if you want to avoid the problem.

Or you start using the POSIX collation.

Yours,
Laurenz Albe



pgsql-general by date:

Previous
From: Dimitrios Apostolou
Date:
Subject: TRUNCATE ONLY with foreign keys and triggers disabled
Next
From: Dominique Devienne
Date:
Subject: Re: Event-Triggers for DB owners instead of just SUPERUSER