I didn't notice anything version-specific about the patch.  Would any 
modifications be needed to backport it to pg13 and pg14?

After this patch goes in, the big next thing would be to support 
nondeterministic collations for LIKE, ILIKE and pattern matching operators in 
general.  Is anyone interested in working on that?

On 1/5/22, 10:36 PM, "Julien Rouhaud" <rjuju...@gmail.com> wrote:

    CAUTION: This email originated from outside of the organization. Do not 
click links or open attachments unless you can confirm the sender and know the 
content is safe.



    On Tue, Jan 04, 2022 at 05:03:10PM +0100, Peter Eisentraut wrote:
    > On 04.01.22 03:21, Julien Rouhaud wrote:
    >
    > > > - 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)?
    >
    > Right, we could just put this into pg_newlocale_from_collation(), but the
    > comment there says
    >
    >  * In fact, they shouldn't call this function at all when they are dealing
    >  * with the default locale.  That can save quite a bit in hotspots.
    >
    > I don't know how to assess that.
    >
    > We could pack this into a macro or inline function if we are concerned 
about
    > this.

    Yes that was my idea, just have a new function (inline function or a macro
    then since pg_newlocale_from_collation() clearly warns about performance
    concerns) that have the whole
    is-not-c-collation-and-is-default-collation-or-icu-collation logic and calls
    pg_newlocale_from_collation() only when needed.



Reply via email to