pgsql: Fix global ICU collations for ICU < 54

From: Peter Eisentraut <peter(at)eisentraut(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix global ICU collations for ICU < 54
Date: 2022-03-20 09:36:52
Message-ID: E1nVrzX-000Xxn-OQ@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix global ICU collations for ICU < 54

createdb() didn't check for collation attributes validity, which has
to be done explicitly on ICU < 54. It also forgot to close the ICU collator
opened during the check which leaks some memory.

To fix both, add a new check_icu_locale() that does all the appropriate
verification and close the ICU collator.

initdb also had some partial check for ICU < 54. To have consistent error
reporting across major ICU versions, and get rid of the need to include ucol.h,
remove the partial check there. The backend will report an error if needed
during the post-boostrap iniitialization phase.

Author: Julien Rouhaud <julien(dot)rouhaud(at)free(dot)fr>
Discussion: https://www.postgresql.org/message-id/20220319041459.qqqiqh335sga5ezj@jrouhaud

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/3a671e1f7cb8b29ad77b08f891b8f22621f490a3

Modified Files
--------------
src/backend/commands/dbcommands.c | 18 +-----------------
src/backend/utils/adt/pg_locale.c | 28 ++++++++++++++++++++++++++++
src/bin/initdb/Makefile | 2 +-
src/bin/initdb/initdb.c | 22 +++-------------------
src/bin/initdb/t/001_initdb.pl | 2 +-
src/include/utils/pg_locale.h | 1 +
src/test/icu/t/010_database.pl | 4 ++--
7 files changed, 37 insertions(+), 40 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Peter Eisentraut 2022-03-20 10:03:38 Re: pgsql: Add option to use ICU as global locale provider
Previous Message Tom Lane 2022-03-19 19:52:15 Re: pgsql: pgstat: run pgindent on pgstat.c/h.