diff --git a/doc/src/sgml/regress.sgml b/doc/src/sgml/regress.sgml index 0e082603bf192b7eb18828c0b4fdbd55ab881bc0..1cb90264fd461986360103ccf33ae9e13acac4a8 100644 --- a/doc/src/sgml/regress.sgml +++ b/doc/src/sgml/regress.sgml @@ -1,4 +1,4 @@ -<!-- $PostgreSQL: pgsql/doc/src/sgml/regress.sgml,v 1.60 2008/09/05 12:11:18 petere Exp $ --> +<!-- $PostgreSQL: pgsql/doc/src/sgml/regress.sgml,v 1.61 2009/02/11 14:03:41 petere Exp $ --> <chapter id="regress"> <title id="regress-title">Regression Tests</title> @@ -204,13 +204,43 @@ gmake installcheck <title>Locale differences</title> <para> - If you run the tests against an already-installed server that was + If you run the tests against a server that was initialized with a collation-order locale other than C, then there might be differences due to sort order and follow-up failures. The regression test suite is set up to handle this problem by providing alternative result files that together are known to handle a large number of locales. </para> + + <para> + To run the tests in a different locale when using the + temporary-installation method, pass the appropriate + locale-related environment variables on + the <command>make</command> command line, for example: +<programlisting> +gmake check LC_ALL=de_DE.utf8 +</programlisting> + or analogously to use no locale: +<programlisting> +gmake check LC_ALL=C +</programlisting> + When running the tests against an existing installation, the + locale setup is determined by the existing installation. To + change it, initialize the database cluster with a different + locale by passing the appropriate options + to <command>initdb</command>. + </para> + + <para> + In general, it is nevertheless advisable to try to run the + regression tests in the locale setup that is wanted for + production use, as this will exercise the locale- and + encoding-related code portions that will actually be used in + production. Depending on the operating system environment, you + might get failures, but then you will at least know what + locale-specific behaviors to expect when running real + applications. + </para> </sect2> <sect2> diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c index 843d3c7294ff9d074197614e8fa48c073c4199e8..2ff76483d2e3f97f0841e831b1dd846acfa6febf 100644 --- a/src/test/regress/pg_regress.c +++ b/src/test/regress/pg_regress.c @@ -11,7 +11,7 @@ * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/test/regress/pg_regress.c,v 1.59 2009/01/28 15:32:21 mha Exp $ + * $PostgreSQL: pgsql/src/test/regress/pg_regress.c,v 1.60 2009/02/11 14:03:42 petere Exp $ * *------------------------------------------------------------------------- */ @@ -686,22 +686,25 @@ initialize_environment(void) { char *tmp; - /* - * Clear out any non-C locale settings - */ - unsetenv("LC_COLLATE"); - unsetenv("LC_CTYPE"); - unsetenv("LC_MONETARY"); - unsetenv("LC_MESSAGES"); - unsetenv("LC_NUMERIC"); - unsetenv("LC_TIME"); - unsetenv("LC_ALL"); - unsetenv("LANG"); - unsetenv("LANGUAGE"); - /* On Windows the default locale cannot be English, so force it */ + if (nolocale) + { + /* + * Clear out any non-C locale settings + */ + unsetenv("LC_COLLATE"); + unsetenv("LC_CTYPE"); + unsetenv("LC_MONETARY"); + unsetenv("LC_MESSAGES"); + unsetenv("LC_NUMERIC"); + unsetenv("LC_TIME"); + unsetenv("LC_ALL"); + unsetenv("LANG"); + unsetenv("LANGUAGE"); + /* On Windows the default locale cannot be English, so force it */ #if defined(WIN32) || defined(__CYGWIN__) - putenv("LANG=en"); + putenv("LANG=en"); #endif + } /* * Set multibyte as requested