Re: Built-in CTYPE provider

Jeff Davis <pgsql@j-davis.com>

From: Jeff Davis <pgsql@j-davis.com>
To: Peter Eisentraut <peter@eisentraut.org>, Daniel Verite <daniel@manitou-mail.org>
Cc: Robert Haas <robertmhaas@gmail.com>, Jeremy Schneider <schneider@ardentperf.com>, pgsql-hackers@postgresql.org
Date: 2024-03-08T01:00:21Z
Lists: pgsql-hackers

Attachments

On Sat, 2024-03-02 at 15:02 -0800, Jeff Davis wrote:
> Attached v20.

And here's v22 (I didn't post v21).

I committed Unicode property tables and functions, and the simple case
mapping. I separated out the full case mapping changes (based on
SpecialCasing.txt) into patch 0006.

Not a lot of technical changes, but I cleaned up the remaining patches
and put them into a nicer order with nicer commit messages.

0001: Catalog renaming: colliculocale to colllocale and daticulocale to
datlocale.

0002: Basic builtin collation provider that only supports "C".

0003: C.UTF-8 locale for builtin collation provider and collation
pg_c_utf8.

0004: Inline some UTF-8 functions to improve performance

0005: Add a unicode_strtitle() function and move the implementation for
the builtin provider out of formatting.c.

0006: Add full case mapping support

0007: Add PG_UNICODE_FAST locale for builtin collation provider and
collation pg_unicode_fast. This behaves like the standard says
UCS_BASIC should behave -- sort by code point order but use Unicode
character semantics with full case mapping.


0004 and beyond could use some review. 0004 and 0005 are pretty simple
and non-controversial. 0006 and 0007 are a bit more interesting and
could use some discussion if we want to go ahead with full case mapping
in 17.

Regards,
	Jeff Davis

Commits

  1. Support PG_UNICODE_FAST locale in the builtin collation provider.

  2. Support Unicode full case mapping and conversion.

  3. Fix test failures when language environment is not UTF-8.

  4. Add unicode_strtitle() for Unicode Default Case Conversion.

  5. Use version for builtin collations.

  6. Fix convert_case(), introduced in 5c40364dd6.

  7. Inline basic UTF-8 functions.

  8. Support C.UTF-8 locale in the new builtin collation provider.

  9. Fix another warning, introduced by 846311051e.

  10. Address more review comments on commit 2d819a08a1.

  11. Fix unreachable code warning from commit 2d819a08a1.

  12. Introduce "builtin" collation provider.

  13. Catalog changes preparing for builtin collation provider.

  14. Unicode case mapping tables and functions.

  15. Add Unicode property tables.

  16. Documentation update for Standard Collations.

  17. Cleanup for unicode-update build target and test.

  18. Shrink Unicode category table.

  19. Make some error strings more generic

  20. pg_upgrade: copy locale and encoding information to new cluster.

  21. Update Unicode data to Unicode 15.0.0

  22. Create a new type category for "internal use" types.