On 24.07.23 04:46, Amit Kapila wrote:
On Fri, Mar 10, 2023 at 3:24 PM Peter Eisentraut
<peter.eisentr...@enterprisedb.com> wrote:
On 08.03.23 21:57, Jeff Davis wrote:
* It appears rules IS NULL behaves differently from rules=''. Is that
desired? For instance:
create collation c1(provider=icu,
locale='und-u-ka-shifted-ks-level1',
deterministic=false);
create collation c2(provider=icu,
locale='und-u-ka-shifted-ks-level1',
rules='',
deterministic=false);
select 'a b' collate c1 = 'ab' collate c1; -- true
select 'a b' collate c2 = 'ab' collate c2; -- false
I'm puzzled by this. The general behavior is, extract the rules of the
original locale, append the custom rules, use that. If the custom rules
are the empty string, that should match using the original rules
untouched. Needs further investigation.
* Can you document the interaction between locale keywords
("@colStrength=primary") and a rule like '[strength 2]'?
I'll look into that.
This thread is listed on PostgreSQL 16 Open Items list. This is a
gentle reminder to see if there is a plan to move forward with respect
to open points.
I have investigated this. My assessment is that how PostgreSQL
interfaces with ICU is correct. Whether what ICU does is correct might
be debatable. I have filed a bug with ICU about this:
https://unicode-org.atlassian.net/browse/ICU-22456 , but there is no
response yet.
You can work around this by including the desired attributes in the
rules string, for example
create collation c3 (provider=icu,
locale='und-u-ka-shifted-ks-level1',
rules='[alternate shifted][strength 1]',
deterministic=false);
So I don't think there is anything we need to do here for PostgreSQL 16.