Re: Move defaults toward ICU in 16? - Mailing list pgsql-hackers

From Pavel Stehule
Subject Re: Move defaults toward ICU in 16?
Date
Msg-id CAFj8pRBPW2bKMsCuwHqEvhubwin_gb=ynY=V45KT3C=nF1MFzA@mail.gmail.com
Whole thread Raw
In response to Re: Move defaults toward ICU in 16?  (Jeff Davis <pgsql@j-davis.com>)
Responses Re: Move defaults toward ICU in 16?
List pgsql-hackers


pá 17. 2. 2023 v 18:02 odesílatel Jeff Davis <pgsql@j-davis.com> napsal:
On Fri, 2023-02-17 at 00:06 -0800, Jeff Davis wrote:
> On Tue, 2023-02-14 at 09:59 -0800, Andres Freund wrote:
> > I am saying that pg_upgrade should be able to deal with the
> > difference. The
> > details of how to implement that, don't matter that much.
>
> To clarify, you're saying that pg_upgrade should simply update
> pg_database to set the new databases' collation fields equal to that
> of
> the old cluster?

Thinking about this more, it's not clear to me if this would be in
scope for pg_upgrade or not. If pg_upgrade is fixing up the new cluster
rather than checking for compatibility, why doesn't it just take over
and do the initdb for the new cluster itself? That would be less
confusing for users, and avoid some weirdness (like, if you drop the
database "postgres" on the original, why does it reappear after an
upgrade?).

Someone might want to do something interesting to the new cluster
before the upgrade, but it's not clear from the docs what would be both
useful and safe.

Today I tested icu for Czech sorting. It is a little bit slower, but not too much, but it produces partially different results.

select row_number() over (order by nazev collate "cs-x-icu"), nazev from obce
except select row_number() over (order by nazev collate "cs_CZ"), nazev from obce;

returns a not empty set. So minimally for Czech collate, an index rebuild is necessary

Regards

Pavel



 

Regards,
        Jeff Davis



pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Re: Move defaults toward ICU in 16?
Next
From: Andres Freund
Date:
Subject: Re: Use pg_pwritev_with_retry() instead of write() in dir_open_for_write() to avoid partial writes?