From 5b275a6e154833803d3beb49da0879d2fe8b1d6c Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 14 Dec 2025 12:54:57 -0500 Subject: [PATCH] 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(); -- 2.39.5