Re: Collation & ctype method table, and extension hooks
Peter Eisentraut <peter@eisentraut.org>
From: Peter Eisentraut <peter@eisentraut.org>
To: Jeff Davis <pgsql@j-davis.com>, Andreas Karlsson <andreas@proxel.se>,
pgsql-hackers@postgresql.org
Date: 2025-12-03T10:41:20Z
Lists: pgsql-hackers
This thread was still open in the commitfest and showed up on my dashboard. My understanding is that v16-0001 and v16-0002 have been committed, and per the discussion below, the remaining patches v16-0003 and v16-0004 have been withdrawn for now. So I will close this commitfest entry. On 30.06.25 21:21, Jeff Davis wrote: > On Sun, 2025-06-29 at 12:43 +0200, Peter Eisentraut wrote: >> I wish we could take this further and also run the "ctype is c" case >> through the method table. Right now, there are still a bunch of >> open-coded special cases all over the place, which could be unified. >> I >> guess this isn't any worse than before, but maybe this could be a >> future >> project? > > +1. A few things need to be sorted out, but I don't see any major > problem with that. > >> Patch 0003 I don't understand. It replaces type safety by no type >> safety, and it doesn't have any explanation or comments. I suppose >> you >> have further plans in this direction, but until we have seen those >> and >> have more clarification and explanation, I would hold this back. > > Part of it is simply #include cleanliness, because we can't do v16-0004 > if we have the provider-specific details in the union. I don't really > like the idea of including ICU headers (indirectly) so many places. > Another part is that I'd like to abstract the providers more completely > -- I've alluded to that a few times but I haven't made an independent > proposal for that yet. Also, the union doesn't offer a lot of type > safety, so I don't see it as a big loss. > > But it's not critical right now either, so I won't push for it. > >> Patch 0004 seems ok. But maybe you could explain this better in the >> commit message, like remove includes from pg_locale.h but instead put >> them in the .c files as needed, and explain why this is possible or >> suitable now. > > It goes with v16-0003, so I will hold this back for now as well. > > 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