Support Unicode full case mapping and conversion.
authorJeff Davis <jdavis@postgresql.org>
Fri, 17 Jan 2025 23:56:20 +0000 (15:56 -0800)
committerJeff Davis <jdavis@postgresql.org>
Fri, 17 Jan 2025 23:56:20 +0000 (15:56 -0800)
commit286a365b9c25479f8ad82043ed136748733adfa6
tree162996323c339d82211c10d2d93bf3470e226b1a
parent6a9b2a631aa3dbac5b351cd0c45631cbc6e8d19e
Support Unicode full case mapping and conversion.

Generate tables from Unicode SpecialCasing.txt to support more
sophisticated case mapping behavior:

 * support case mappings to multiple codepoints, such as "ß"
   uppercasing to "SS"
 * support conditional case mappings, such as the "final sigma"
 * support titlecase variants, such as "dž" uppercasing to "DŽ" but
   titlecasing to "Dž"

Discussion: https://postgr.es/m/ddfd67928818f138f51635712529bc5e1d25e4e7.camel@j-davis.com
Discussion: https://postgr.es/m/27bb0e52-801d-4f73-a0a4-02cfdd4a9ada@eisentraut.org
Reviewed-by: Peter Eisentraut, Daniel Verite
src/backend/utils/adt/pg_locale_builtin.c
src/common/unicode/Makefile
src/common/unicode/case_test.c
src/common/unicode/generate-unicode_case_table.pl
src/common/unicode/meson.build
src/common/unicode_case.c
src/include/common/unicode_case.h
src/include/common/unicode_case_table.h
src/tools/pgindent/typedefs.list