Thread
-
Re: BUG #19341: REPLACE() fails to match final character when using nondeterministic ICU collation
Laurenz Albe <laurenz.albe@cybertec.at> — 2025-12-02T16:24:54Z
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