git.postgresql.org Git - postgresql.git/commitdiff

git projects / postgresql.git / commitdiff
? search:
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 53e7229)
Need to use pg_perm_setlocale when setting LC_CTYPE and LC_COLLATE at startup.
Wed, 8 Jul 2009 17:53:29 +0000 (17:53 +0000)
Wed, 8 Jul 2009 17:53:29 +0000 (17:53 +0000)
Otherwise, the LC_CTYPE/COLLATE setting gets reverted when using plperl, which
leads to incorrect query results and index corruption.

This was accidentally broken in the per-database locale patch in 8.4. Pointed
out by Andrew Gierth.


diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c
index 34685cba3ced1bc6e806903a782e7c2c09afbcc9..bdb2fec1043e39d4f18874a5f217742374c3b7dd 100644 (file)
--- a/src/backend/utils/init/postinit.c
+++ b/src/backend/utils/init/postinit.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/init/postinit.c,v 1.191 2009年06月11日 14:49:05 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/init/postinit.c,v 1.192 2009年07月08日 17:53:29 heikki Exp $
*
*
*-------------------------------------------------------------------------
@@ -44,6 +44,7 @@
#include "utils/acl.h"
#include "utils/flatfiles.h"
#include "utils/guc.h"
+#include "utils/pg_locale.h"
#include "utils/plancache.h"
#include "utils/portal.h"
#include "utils/relcache.h"
@@ -247,14 +248,14 @@ CheckMyDatabase(const char *name, bool am_superuser)
collate = NameStr(dbform->datcollate);
ctype = NameStr(dbform->datctype);
- if (setlocale(LC_COLLATE, collate) == NULL)
+ if (pg_perm_setlocale(LC_COLLATE, collate) == NULL)
ereport(FATAL,
(errmsg("database locale is incompatible with operating system"),
errdetail("The database was initialized with LC_COLLATE \"%s\", "
" which is not recognized by setlocale().", collate),
errhint("Recreate the database with another locale or install the missing locale.")));
- if (setlocale(LC_CTYPE, ctype) == NULL)
+ if (pg_perm_setlocale(LC_CTYPE, ctype) == NULL)
ereport(FATAL,
(errmsg("database locale is incompatible with operating system"),
errdetail("The database was initialized with LC_CTYPE \"%s\", "
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /