aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2002-05-09 13:30:24 +0000
committerPeter Eisentraut <peter_e@gmx.net>2002-05-09 13:30:24 +0000
commit1944bff1d6311735df02aa714c7966281ff97a53 (patch)
tree8da222202fe234f5b9b71cc999d5857edcb2fb37
parent16e22de53ab530843237121fa4daf12da24f1d41 (diff)
downloadpostgresql-1944bff1d6311735df02aa714c7966281ff97a53.tar.gz
postgresql-1944bff1d6311735df02aa714c7966281ff97a53.zip
Make initdb print a message about which locale it is about to use.
Re-add warning if the locale prevents LIKE-optimization. Done within initdb now.
-rw-r--r--doc/src/sgml/runtime.sgml11
-rw-r--r--src/backend/access/transam/xlog.c16
-rw-r--r--src/backend/utils/adt/selfuncs.c4
-rw-r--r--src/bin/initdb/initdb.sh26
4 files changed, 34 insertions, 23 deletions
diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml
index 5332808fe77..70131be3a27 100644
--- a/doc/src/sgml/runtime.sgml
+++ b/doc/src/sgml/runtime.sgml
@@ -1,5 +1,5 @@
<!--
-$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.114 2002/04/26 01:24:08 tgl Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.115 2002/05/09 13:30:24 petere Exp $
-->
<Chapter Id="runtime">
@@ -145,11 +145,10 @@ postgres$ <userinput>initdb -D /usr/local/pgsql/data</userinput>
linkend="locale">. One surprise you might encounter while running
<command>initdb</command> is a notice similar to this:
<screen>
-WARNING: Initializing database with en_US collation order.
- This locale setting will prevent use of index optimization for
- LIKE and regexp searches. If you are concerned about speed of
- such queries, you may wish to set LC_COLLATE to "C" and
- re-initdb. For more information see the Administrator's Guide.
+The database cluster will be initialized with locale de_DE.
+This locale setting will prevent the use of indexes for pattern matching
+operations. If that is a concern, rerun initdb with the collation order
+set to "C". For more information see the Administrator's Guide.
</screen>
This is intended to warn you that the currently selected locale
will cause indexes to be sorted in an order that prevents them from
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index a6a51f7f604..eca4a5de5f8 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.93 2002/04/24 01:54:43 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.94 2002/05/09 13:30:24 petere Exp $
*
*-------------------------------------------------------------------------
*/
@@ -39,7 +39,6 @@
#include "storage/spin.h"
#include "utils/builtins.h"
#include "utils/relcache.h"
-#include "utils/selfuncs.h"
#include "miscadmin.h"
@@ -2108,19 +2107,6 @@ WriteControlFile(void)
elog(PANIC, "invalid LC_CTYPE setting");
StrNCpy(ControlFile->lc_ctype, localeptr, LOCALE_NAME_BUFLEN);
- /*
- * Issue warning WARNING if initdb'ing in a locale that will not permit
- * LIKE index optimization. This is not a clean place to do it, but I
- * don't see a better place either...
- */
- if (!locale_is_like_safe())
- elog(WARNING, "Initializing database with %s collation order."
- "\n\tThis locale setting will prevent use of index optimization for"
- "\n\tLIKE and regexp searches. If you are concerned about speed of"
- "\n\tsuch queries, you may wish to set LC_COLLATE to \"C\" and"
- "\n\tre-initdb. For more information see the Administrator's Guide.",
- ControlFile->lc_collate);
-
/* Contents are protected with a CRC */
INIT_CRC64(ControlFile->crc);
COMP_CRC64(ControlFile->crc,
diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c
index 8294612e137..7ba1fd55875 100644
--- a/src/backend/utils/adt/selfuncs.c
+++ b/src/backend/utils/adt/selfuncs.c
@@ -15,7 +15,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v 1.110 2002/04/25 02:56:55 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v 1.111 2002/05/09 13:30:24 petere Exp $
*
*-------------------------------------------------------------------------
*/
@@ -3189,6 +3189,8 @@ pattern_selectivity(char *patt, Pattern_Type ptype)
* could be different from lc_collate_is_c(), but in a different
* theory, non-C locales are completely unpredicable so it's unlikely
* to happen.)
+ *
+ * Be sure to maintain the correspondence with the code in initdb.
*/
bool
locale_is_like_safe(void)
diff --git a/src/bin/initdb/initdb.sh b/src/bin/initdb/initdb.sh
index 9a6b78217b7..0405b316d75 100644
--- a/src/bin/initdb/initdb.sh
+++ b/src/bin/initdb/initdb.sh
@@ -27,7 +27,7 @@
# Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
# Portions Copyright (c) 1994, Regents of the University of California
#
-# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.152 2002/04/27 21:24:34 tgl Exp $
+# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.153 2002/05/09 13:30:24 petere Exp $
#
#-------------------------------------------------------------------------
@@ -464,6 +464,30 @@ echo "The files belonging to this database system will be owned by user \"$Effec
echo "This user must also own the server process."
echo
+TAB=' '
+
+if test `pg_getlocale CTYPE` = `pg_getlocale COLLATE` \
+ && test `pg_getlocale CTYPE` = `pg_getlocale TIME` \
+ && test `pg_getlocale CTYPE` = `pg_getlocale NUMERIC` \
+ && test `pg_getlocale CTYPE` = `pg_getlocale MONETARY` \
+ && test `pg_getlocale CTYPE` = `pg_getlocale MESSAGES`
+then
+ echo "The database cluster will be initialized with locale `pg_getlocale CTYPE`."
+else
+ echo "The database cluster will be initialized with locales:"
+ echo " COLLATE: `pg_getlocale COLLATE`${TAB}CTYPE: `pg_getlocale CTYPE`${TAB}MESSAGES: `pg_getlocale MESSAGES`"
+ echo " MONETARY: `pg_getlocale MONETARY`${TAB}NUMERIC: `pg_getlocale NUMERIC`${TAB}TIME: `pg_getlocale TIME`"
+fi
+
+# (Be sure to maintain the correspondence with locale_is_like_safe() in selfuncs.c.)
+if test `pg_getlocale COLLATE` != C && test `pg_getlocale COLLATE` != POSIX; then
+ echo "This locale setting will prevent the use of indexes for pattern matching"
+ echo "operations. If that is a concern, rerun $CMDNAME with the collation order"
+ echo "set to \"C\". For more information see the Administrator's Guide."
+fi
+echo
+
+
##########################################################################
#
# CREATE DATABASE DIRECTORY