Re: Collation & ctype method table, and extension hooks
Jeff Davis <pgsql@j-davis.com>
From: Jeff Davis <pgsql@j-davis.com>
To: Andreas Karlsson <andreas@proxel.se>, pgsql-hackers@postgresql.org, Peter Eisentraut <peter@eisentraut.org>
Date: 2025-01-18T06:42:15Z
Lists: pgsql-hackers
Attachments
- v14-0001-Control-ctype-behavior-internally-with-a-method-.patch (text/x-patch) patch v14-0001
- v14-0002-Remove-provider-field-from-pg_locale_t.patch (text/x-patch) patch v14-0002
- v14-0003-Make-provider-data-in-pg_locale_t-an-opaque-poin.patch (text/x-patch) patch v14-0003
- v14-0004-Don-t-include-ICU-headers-in-pg_locale.h.patch (text/x-patch) patch v14-0004
On Wed, 2025-01-15 at 12:42 -0800, Jeff Davis wrote: > > Here's v12 after committing a few of the earlier patches. And here's v14, just a rebase. > I collected some performance numbers for a worst case on UTF8. I'm still inlined to think the method table is a good thing to do: (a) The performance cases I tried seem implausibly bad -- running character classification patterns over large fields consisting only of codepoints over U+07FF. (b) The method tables seem like a better code organization that separates the responsibilities of the provider from the calling code. It's also a requirement (or nearly so) if we want to provide some pluggability or support multiple library versions. It would be good to hear from others on these points, though. 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