diff options
author | Jeff Davis <jdavis@postgresql.org> | 2023-03-17 11:47:35 -0700 |
---|---|---|
committer | Jeff Davis <jdavis@postgresql.org> | 2023-03-17 12:07:47 -0700 |
commit | 8b87e92919cd0e8e8ffbae543d996063149c3ccc (patch) | |
tree | 4997aa451e36a850e9ba68270ec439af2388953a /src/backend/utils/init/postinit.c | |
parent | 2b216da1e55dc125ada193328e87e471d49b0938 (diff) | |
download | postgresql-8b87e92919cd0e8e8ffbae543d996063149c3ccc.tar.gz postgresql-8b87e92919cd0e8e8ffbae543d996063149c3ccc.zip |
Fix t_isspace(), etc., when datlocprovider=i and datctype=C.
Check whether the datctype is C to determine whether t_isspace() and
related functions use isspace() or iswspace().
Previously, t_isspace() checked whether the database default collation
was C; which is incorrect when the default collation uses the ICU
provider.
Discussion: https://postgr.es/m/79e4354d9eccfdb00483146a6b9f6295202e7890.camel@j-davis.com
Reviewed-by: Peter Eisentraut
Backpatch-through: 15
Diffstat (limited to 'src/backend/utils/init/postinit.c')
-rw-r--r-- | src/backend/utils/init/postinit.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c index 28d5e19848a..ae03706d840 100644 --- a/src/backend/utils/init/postinit.c +++ b/src/backend/utils/init/postinit.c @@ -418,6 +418,10 @@ CheckMyDatabase(const char *name, bool am_superuser, bool override_allow_connect " which is not recognized by setlocale().", ctype), errhint("Recreate the database with another locale or install the missing locale."))); + if (strcmp(ctype, "C") == 0 || + strcmp(ctype, "POSIX") == 0) + database_ctype_is_c = true; + if (dbform->datlocprovider == COLLPROVIDER_ICU) { datum = SysCacheGetAttr(DATABASEOID, tup, Anum_pg_database_daticulocale, &isnull); |