Rework of collation code, extensibility
Jeff Davis <pgsql@j-davis.com>
From: Jeff Davis <pgsql@j-davis.com>
To: pgsql-hackers@postgresql.org
Date: 2022-12-18T03:14:23Z
Lists: pgsql-hackers
Attachments
- v4-0001-Add-pg_strcoll-and-pg_strncoll.patch (text/x-patch) patch v4-0001
- v4-0002-Add-pg_strxfrm-and-pg_strxfrm_prefix.patch (text/x-patch) patch v4-0002
- v4-0003-Refactor-pg_locale_t-routines.patch (text/x-patch) patch v4-0003
- v4-0004-Support-multiple-ICU-collation-provider-libraries.patch (text/x-patch) patch v4-0004
- v4-0005-Support-multiple-libc-collation-provider-librarie.patch (text/x-patch) patch v4-0005
- v4-0006-Add-tests-for-collation-provider-hooks.patch (text/x-patch) patch v4-0006
Attached is a new patch series. I think there are enough changes that this has become more of a "rework" of the collation code rather than just a refactoring. This is a continuation of some prior work[1][2] in a new thread given its new scope. Benefits: 1. Clearer division of responsibilities. 2. More consistent between libc and ICU providers. 3. Hooks that allow extensions to replace collation provider libraries. 4. New tests for the collation provider library hooks. There are a lot of changes, and still some loose ends, but I believe a few of these patches are close to ready. This set of changes does not express an opinion on how we might want to support multiple provider libraries in core; but whatever we choose, it should be easier to accomplish. Right now, the hooks have limited information on which to make the choice for a specific version of a collation provider library, but that's because there's limited information in the catalog. If the discussion here[3] concludes in adding collation provider library or library version information to the catalog, we can add additional parameters to the hooks. [1] https://postgr.es/m/99aa79cceefd1fe84fda23510494b8fbb7ad1e70.camel@j-davis.com [2] https://postgr.es/m/c4fda90ec6a7568a896f243a38eb273c3b5c3d93.camel@j-davis.com [3] https://postgr.es/m/CA+hUKGLEqMhnpZrgAcisoUeYFGz8W6EWdhtK2h-4QN0iOSFRqw@mail.gmail.com -- Jeff Davis PostgreSQL Contributor Team - AWS
Commits
-
Remove unnecessary #ifdef USE_ICU and branch.
- e0b3074e8944 16.0 landed
-
Refactor to introduce pg_locale_deterministic().
- 6974a8f7682b 16.0 landed
-
Refactor to add pg_strcoll(), pg_strxfrm(), and variants.
- d87d548cd030 16.0 landed
-
Fix MSVC build
- c971a5b27ac9 16.0 cited