Re: ICU for global collation - Mailing list pgsql-hackers

From Julien Rouhaud
Subject Re: ICU for global collation
Date
Msg-id YdOvEAFGbfGY/47A@jrouhaud
Whole thread Raw
In response to Re: ICU for global collation  (Peter Eisentraut <peter.eisentraut@enterprisedb.com>)
Responses Re: ICU for global collation
List pgsql-hackers
Hi,

On Thu, Dec 30, 2021 at 01:07:21PM +0100, Peter Eisentraut wrote:
> 
> So this is a different approach: If you choose ICU as the default locale for
> a database, you still need to specify lc_ctype and lc_collate settings, as
> before.  Unlike in the previous patch, where the ICU collation name was
> written in datcollate, there is now a third column (daticucoll), so we can
> store all three values.  This fixes the described problem.  Other than that,
> once you get all the initial settings right, it basically just works: The
> places that have ICU support now will use a database-wide ICU collation if
> appropriate, the places that don't have ICU support continue to use the
> global libc locale settings.

That looks sensible to me.

> @@ -2774,6 +2776,7 @@ dumpDatabase(Archive *fout)
>          appendPQExpBuffer(dbQry, "SELECT tableoid, oid, datname, "
>                            "(%s datdba) AS dba, "
>                            "pg_encoding_to_char(encoding) AS encoding, "
> +                          "datcollprovider, "

This needs to be in a new pg 15+ branch, not in the pg 9.3+.

> -    if (!lc_collate_is_c(collid) && collid != DEFAULT_COLLATION_OID)
> -        mylocale = pg_newlocale_from_collation(collid);
> +    if (!lc_collate_is_c(collid))
> +    {
> +        if (collid != DEFAULT_COLLATION_OID)
> +            mylocale = pg_newlocale_from_collation(collid);
> +        else if (default_locale.provider == COLLPROVIDER_ICU)
> +            mylocale = &default_locale;
> +    }

There are really a lot of places with this new code.  Maybe it could be some
new function/macro to wrap that for the normal case (e.g. not formatting.c)?



pgsql-hackers by date:

Previous
From: Kyotaro Horiguchi
Date:
Subject: Re: Add checkpoint and redo LSN to LogCheckpointEnd log message
Next
From: Kyotaro Horiguchi
Date:
Subject: Re: Allow escape in application_name