Add #define for UNICODE_CASEMAP_BUFSZ.
authorJeff Davis <jdavis@postgresql.org>
Wed, 26 Nov 2025 18:05:11 +0000 (10:05 -0800)
committerJeff Davis <jdavis@postgresql.org>
Wed, 26 Nov 2025 18:05:11 +0000 (10:05 -0800)
Useful for mapping a single codepoint at a time into a
statically-allocated buffer.

Discussion: https://postgr.es/m/450ceb6260cad30d7afdf155d991a9caafee7c0d.camel@j-davis.com
Reviewed-by: Chao Li <li.evan.chao@gmail.com>
src/include/utils/pg_locale.h

index 683e1a0eef837a9cfa137960d6184bc4e8b7d0eb..54193a17a90fed4c3df591f7266c29ed0a9e6895 100644 (file)
 /* use for libc locale names */
 #define LOCALE_NAME_BUFLEN 128
 
+/*
+ * Maximum number of bytes needed to map a single codepoint. Useful for
+ * mapping and processing a single input codepoint at a time with a
+ * statically-allocated buffer.
+ *
+ * With full case mapping, an input codepoint may be mapped to as many as
+ * three output codepoints. See Unicode 16.0.0, section 5.18.2, "Change in
+ * Length":
+ *
+ * https://www.unicode.org/versions/Unicode16.0.0/core-spec/chapter-5/#G29675
+ */
+#define UNICODE_CASEMAP_LEN        3
+#define UNICODE_CASEMAP_BUFSZ  (UNICODE_CASEMAP_LEN * sizeof(char32_t))
+
 /* GUC settings */
 extern PGDLLIMPORT char *locale_messages;
 extern PGDLLIMPORT char *locale_monetary;