diff options
Diffstat (limited to 'src/backend/utils/adt/pg_locale_builtin.c')
| -rw-r--r-- | src/backend/utils/adt/pg_locale_builtin.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/backend/utils/adt/pg_locale_builtin.c b/src/backend/utils/adt/pg_locale_builtin.c index fef5b6e6d38..436e32c0ca0 100644 --- a/src/backend/utils/adt/pg_locale_builtin.c +++ b/src/backend/utils/adt/pg_locale_builtin.c @@ -78,7 +78,8 @@ size_t strlower_builtin(char *dest, size_t destsize, const char *src, ssize_t srclen, pg_locale_t locale) { - return unicode_strlower(dest, destsize, src, srclen, false); + return unicode_strlower(dest, destsize, src, srclen, + locale->info.builtin.casemap_full); } size_t @@ -93,7 +94,8 @@ strtitle_builtin(char *dest, size_t destsize, const char *src, ssize_t srclen, .prev_alnum = false, }; - return unicode_strtitle(dest, destsize, src, srclen, false, + return unicode_strtitle(dest, destsize, src, srclen, + locale->info.builtin.casemap_full, initcap_wbnext, &wbstate); } @@ -101,7 +103,8 @@ size_t strupper_builtin(char *dest, size_t destsize, const char *src, ssize_t srclen, pg_locale_t locale) { - return unicode_strupper(dest, destsize, src, srclen, false); + return unicode_strupper(dest, destsize, src, srclen, + locale->info.builtin.casemap_full); } pg_locale_t @@ -142,6 +145,7 @@ create_pg_locale_builtin(Oid collid, MemoryContext context) result = MemoryContextAllocZero(context, sizeof(struct pg_locale_struct)); result->info.builtin.locale = MemoryContextStrdup(context, locstr); + result->info.builtin.casemap_full = (strcmp(locstr, "PG_UNICODE_FAST") == 0); result->provider = COLLPROVIDER_BUILTIN; result->deterministic = true; result->collate_is_c = true; @@ -164,6 +168,8 @@ get_collation_actual_version_builtin(const char *collcollate) return "1"; else if (strcmp(collcollate, "C.UTF-8") == 0) return "1"; + else if (strcmp(collcollate, "PG_UNICODE_FAST") == 0) + return "1"; else ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), |
