| From: | Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at> |
|---|---|
| To: | adam(dot)warland(at)infor(dot)com, pgsql-bugs(at)lists(dot)postgresql(dot)org |
| Subject: | Re: BUG #19341: REPLACE() fails to match final character when using nondeterministic ICU collation |
| Date: | 2025-12-02 16:24:54 |
| Message-ID: | 60b467ac47d5c6bbb9c21c3bdfecce8e5de60cda.camel@cybertec.at |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-bugs |
On Tue, 2025-12-02 at 10:03 +0000, PG Bug reporting form wrote:
> PostgreSQL version: 18.1
>
> When using a nondeterministic ICU collation, the replace() function fails to
> replace a substring when that substring appears at the end of the input
> string.
>
> Occurrences of the same substring earlier in the string are replaced
> normally.
>
> Specific collation used:
> create collation test_nondeterministic (
> provider = icu,
> locale = 'und-u-ks-level2',
> deterministic = false
> )
>
> -- Replace final character under nondeterministic collation
> SELECT replace(
> 'testx' COLLATE "test_nondeterministic",
> 'x' COLLATE "test_nondeterministic",
> 'y') AS res1;
I can reproduce the problem, and the attached patch fixes it for me.
I am not certain if it is safe to apply pg_mblen() to "haystack_end", though.
Yours,
Laurenz Albe
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Laurenz Albe | 2025-12-02 16:31:54 | Re: BUG #19341: REPLACE() fails to match final character when using nondeterministic ICU collation |
| Previous Message | Oleg Ivanov | 2025-12-02 14:05:23 | Re: BUG #19340: Wrong result from CORR() function |