postgres.git / summary / log / commit / refs
commit 5b275a6e154833803d3beb49da0879d2fe8b1d6c
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sun Dec 14 17:54:57 2025 +0000
Try a few different locale name spellings in nls.sql.
While CI testing in advance of commit 8c498479d suggested that all
Unix-ish platforms would accept 'es_ES.UTF-8', the buildfarm has
a different opinion. Let's dynamically select something that works,
if possible.
Discussion: https://postgr.es/m/E1vUpNU-000kcQ-1D@gemulon.postgresql.org
src/test/regress/expected/nls.out | 21 +++++++++++++++++----
src/test/regress/expected/nls_1.out | 21 +++++++++++++++++----
src/test/regress/sql/nls.sql | 21 +++++++++++++++++----
3 files changed, 51 insertions(+), 12 deletions(-)
diff --git a/src/test/regress/expected/nls.out b/src/test/regress/expected/nls.out
index 5a650294eaf..45c6fc2aaac 100644
--- a/src/test/regress/expected/nls.out
+++ b/src/test/regress/expected/nls.out
@@ -6,10 +6,23 @@ CREATE FUNCTION test_translation()
RETURNS void
AS :'regresslib'
LANGUAGE C;
--- Some BSDen are sticky about wanting a codeset name in lc_messages,
--- but it seems that at least on common platforms it doesn't have
--- to match the actual database encoding.
-SET lc_messages = 'es_ES.UTF-8';
+-- There's less standardization in locale name spellings than one could wish.
+-- While some platforms insist on having a codeset name in lc_messages,
+-- fortunately it seems that it need not match the actual database encoding.
+do $$
+declare locale text; ok bool;
+begin
+ for locale in values('es_ES'), ('es_ES.UTF-8'), ('es_ES.utf8')
+ loop
+ ok = true;
+ begin
+ execute format('set lc_messages = %L', locale);
+ exception when invalid_parameter_value then
+ ok = false;
+ end;
+ exit when ok;
+ end loop;
+end $$;
SELECT test_translation();
NOTICE: traducido PRId64 = 424242424242
NOTICE: traducido PRId32 = -1234
diff --git a/src/test/regress/expected/nls_1.out b/src/test/regress/expected/nls_1.out
index 9f1a2776e50..554d7204bf1 100644
--- a/src/test/regress/expected/nls_1.out
+++ b/src/test/regress/expected/nls_1.out
@@ -6,10 +6,23 @@ CREATE FUNCTION test_translation()
RETURNS void
AS :'regresslib'
LANGUAGE C;
--- Some BSDen are sticky about wanting a codeset name in lc_messages,
--- but it seems that at least on common platforms it doesn't have
--- to match the actual database encoding.
-SET lc_messages = 'es_ES.UTF-8';
+-- There's less standardization in locale name spellings than one could wish.
+-- While some platforms insist on having a codeset name in lc_messages,
+-- fortunately it seems that it need not match the actual database encoding.
+do $$
+declare locale text; ok bool;
+begin
+ for locale in values('es_ES'), ('es_ES.UTF-8'), ('es_ES.utf8')
+ loop
+ ok = true;
+ begin
+ execute format('set lc_messages = %L', locale);
+ exception when invalid_parameter_value then
+ ok = false;
+ end;
+ exit when ok;
+ end loop;
+end $$;
SELECT test_translation();
NOTICE: NLS is not enabled
test_translation
diff --git a/src/test/regress/sql/nls.sql b/src/test/regress/sql/nls.sql
index efeda8c5841..9d5b0fd7d45 100644
--- a/src/test/regress/sql/nls.sql
+++ b/src/test/regress/sql/nls.sql
@@ -9,10 +9,23 @@ CREATE FUNCTION test_translation()
AS :'regresslib'
LANGUAGE C;
--- Some BSDen are sticky about wanting a codeset name in lc_messages,
--- but it seems that at least on common platforms it doesn't have
--- to match the actual database encoding.
-SET lc_messages = 'es_ES.UTF-8';
+-- There's less standardization in locale name spellings than one could wish.
+-- While some platforms insist on having a codeset name in lc_messages,
+-- fortunately it seems that it need not match the actual database encoding.
+do $$
+declare locale text; ok bool;
+begin
+ for locale in values('es_ES'), ('es_ES.UTF-8'), ('es_ES.utf8')
+ loop
+ ok = true;
+ begin
+ execute format('set lc_messages = %L', locale);
+ exception when invalid_parameter_value then
+ ok = false;
+ end;
+ exit when ok;
+ end loop;
+end $$;
SELECT test_translation();
[parent: b853e644d78d]