On 24.07.23 04:46, Amit Kapila wrote:
> On Fri, Mar 10, 2023 at 3:24 PM Peter Eisentraut
> <peter.eisentraut@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.