Re: Collation & ctype method table, and extension hooks

Noah Misch <noah@leadboat.com>

From: Noah Misch <noah@leadboat.com>
To: Jeff Davis <pgsql@j-davis.com>
Cc: Andreas Karlsson <andreas@proxel.se>, pgsql-hackers@postgresql.org, Peter Eisentraut <peter@eisentraut.org>
Date: 2026-07-07T00:11:14Z
Lists: pgsql-hackers

Attachments

On Mon, Jul 06, 2026 at 02:31:06PM -0700, Jeff Davis wrote:
> On Mon, 2026-06-29 at 18:29 -0700, Noah Misch wrote:
> >   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?

Yep.  I didn't read the patches, but this per-issue triage is reasonable.

> In the future, if practical, can you please include reports like this
> as text attachments for the sake of the archives?

I've attached it.

Commits

  1. Remove provider field from pg_locale_t.

  2. Control ctype behavior internally with a method table.

  3. Control collation behavior with a method table.

  4. Move code for collation version into provider-specific files.

  5. Refactor string case conversion into provider-specific files.

  6. Move check for ucol_strcollUTF8 to pg_locale_icu.c

  7. Perform provider-specific initialization in new functions.

  8. Refactor the code to create a pg_locale_t into new function.