Re: Collation & ctype method table, and extension hooks
Jeff Davis <pgsql@j-davis.com>
From: Jeff Davis <pgsql@j-davis.com>
To: Noah Misch <noah@leadboat.com>
Cc: Andreas Karlsson <andreas@proxel.se>, pgsql-hackers@postgresql.org,
Peter Eisentraut <peter@eisentraut.org>
Date: 2026-07-06T21:31:06Z
Lists: pgsql-hackers
Attachments
- v1-0001-Fix-unintentional-behavior-change-from-5a38104b36.patch (text/x-patch) patch v1-0001
- v1-0002-Fix-obsolete-comment.patch (text/x-patch) patch v1-0002
- v1-0003-pg_locale_libc.c-add-guards-to-ctype-methods.patch (text/x-patch) patch v1-0003
- v1-0004-pg_locale_libc.c-add-missing-casts-to-unsigned-ch.patch (text/x-patch) patch v1-0004
On Mon, 2026-06-29 at 18:29 -0700, Noah Misch wrote: > This became refactor commit 5a38104. In a UTF8 database, the commit > changed > the behavior of: > > SELECT 'café' ILIKE 'caf_' COLLATE "C"; > > That query reports true in v18, false in v19. Thank you for the report! Fixed in 0001, with test. > I've copied Claude's whole > review for the commit to > https://docs.google.com/document/d/19_xKpKUQlY5N51qbfXyipXs3rqIYEC3qk5oaUDJ48YA/edit?tab=t.0 > . > Two of its other findings sound potentially important, but I didn't > verify > them. I'll refer to the issue numbers below (NB: the doc's summary uses different numbering, which is confusing): Issue 1: Real issue for windows and code points > 0xFFFF. Other cases are just defensive, I believe. Fixed in 0003. Issue 2: I don't see an issue here, though sort of related to the fix in 0003. Issue 3: I don't see an issue here. Issue 4: The issue you raised above; fixed in 0001. Issue 5: I don't see an issue here. I also addressed summary item 4, the comment block fix, in 0002. And I added some missing casts in 0004. Does that cover the two other findings you were concerned about? In the future, if practical, can you please include reports like this as text attachments for the sake of the archives? Regards, Jeff Davis
Commits
-
Remove provider field from pg_locale_t.
- 8af0d0ab01b4 19 (unreleased) landed
-
Control ctype behavior internally with a method table.
- 5a38104b3642 19 (unreleased) landed
-
Control collation behavior with a method table.
- a2f17f004d22 18.0 landed
-
Move code for collation version into provider-specific files.
- 4f5cef2607c1 18.0 landed
-
Refactor string case conversion into provider-specific files.
- 86a5d6006aff 18.0 landed
-
Move check for ucol_strcollUTF8 to pg_locale_icu.c
- 7167e05fc7d1 18.0 landed
-
Perform provider-specific initialization in new functions.
- 1ba0782ce90c 18.0 landed
-
Refactor the code to create a pg_locale_t into new function.
- 3aa2373c1141 18.0 landed