1
0
mirror of https://github.com/postgres/postgres.git synced 2026-10-23 13:29:09 +03:00

Fix yet another portability problem in new NLS test.

Álvaro reported offlist that his machine was passing the new-in-v19
nls.sql test in "make check" but not in "make installcheck".  On
investigation, the cause turned out to be that he has LANGUAGE set in
his environment, and with (at least recent versions of) glibc that
overrides LC_MESSAGES and friends, as per previous research by Bryan
Green.  "make check" works because pg_regress unsets LANGUAGE before
starting the postmaster, but in installcheck mode we're exposed to
the prevailing value and we lose.

We're already hacking the value of LANGUAGE in this test for Solaris,
so let's just extend that to unsetting LANGUAGE on every other platform.

Reported-by: Álvaro Herrera <alvherre@kurilemu.de>
Diagnosed-by: Andrew Dunstan <andrew@dunslane.net>
Author: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/a337896e-5bff-490b-afc9-c545f06c014c@gmail.com
Backpatch-through: 19
This commit is contained in:
Tom Lane
2026-07-17 18:08:23 -04:00
parent 3180ce3d7a
commit 5ed9cee74c

View File

@@ -1335,9 +1335,15 @@ test_translation(PG_FUNCTION_ARGS)
* Apparently the customary workaround is for users to set the
* LANGUAGE environment variable to provide a mapping. Do so here to
* ensure that the nls.sql regression test will work.
*
* With glibc and perhaps other implementations, LANGUAGE overrides
* LC_MESSAGES, which we don't want either; so let's unset it if we're
* not on Solaris.
*/
#if defined(__sun__)
setenv("LANGUAGE", "es_ES.UTF-8:es", 1);
#else
unsetenv("LANGUAGE");
#endif
pg_bindtextdomain(TEXTDOMAIN);
inited = true;