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-06-29T10:43:41Z
Lists: pgsql-hackers
On 12.06.25 07:49, Jeff Davis wrote: > On Fri, 2025-02-07 at 11:19 -0800, Jeff Davis wrote: >> >> Attached v15. Just a rebase. > > Attached v16. > >> * commit this on the grounds that it's a desirable code improvement >> and >> the worst-case regression isn't a major concern; or > > I plan to commit this soon after branching. There's a general consensus > that enabling multi-lib provider support is a good idea, and turning > the provider behavior into method tables is a prerequisite for that. I > doubt the performance issue will be a serious concern and I don't see a > good way to avoid it. Patch 0001 and 0002 seem okay to me. 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? 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. 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.
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