diff options
| author | Jeff Davis | 2023-03-28 23:15:59 +0000 |
|---|---|---|
| committer | Jeff Davis | 2023-03-28 23:34:29 +0000 |
| commit | 1671f990dd669c0b72e45c7bef0fd579a10676ed (patch) | |
| tree | 002e9ca8c4cd35b2f641de6c308f78b701f3b21a /src/test/regress | |
| parent | b7cea58822c67724effc711ae28e4077a01a7cd6 (diff) | |
Validate ICU locales.
For ICU collations, ensure that the locale's language exists in ICU,
and that the locale can be opened.
Basic validation helps avoid minor mistakes and misspellings, which
often fall back to the root locale instead of the intended
locale. It's even more important to avoid such mistakes in ICU
versions 54 and earlier, where the same (misspelled) locale string
could fall back to different locales depending on the environment.
Discussion: https://postgr.es/m/11b1eeb7e7667fdd4178497aeb796c48d26e69b9.camel@j-davis.com
Discussion: https://postgr.es/m/df2efad0cae7c65180df8e5ebb709e5eb4f2a82b.camel@j-davis.com
Reviewed-by: Peter Eisentraut
Diffstat (limited to 'src/test/regress')
| -rw-r--r-- | src/test/regress/expected/collate.icu.utf8.out | 9 | ||||
| -rw-r--r-- | src/test/regress/sql/collate.icu.utf8.sql | 5 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/test/regress/expected/collate.icu.utf8.out b/src/test/regress/expected/collate.icu.utf8.out index f135200c99..5e480d45cd 100644 --- a/src/test/regress/expected/collate.icu.utf8.out +++ b/src/test/regress/expected/collate.icu.utf8.out @@ -1035,7 +1035,14 @@ END $$; CREATE COLLATION test3 (provider = icu, lc_collate = 'en_US.utf8'); -- fail, needs "locale" ERROR: parameter "locale" must be specified -CREATE COLLATION testx (provider = icu, locale = 'nonsense'); /* never fails with ICU */ DROP COLLATION testx; +CREATE COLLATION testx (provider = icu, locale = 'nonsense-nowhere'); -- fails +ERROR: ICU locale "nonsense-nowhere" has unknown language "nonsense" +HINT: To disable ICU locale validation, set parameter icu_validation_level to DISABLED. +SET icu_validation_level = WARNING; +CREATE COLLATION testx (provider = icu, locale = 'nonsense-nowhere'); DROP COLLATION testx; +WARNING: ICU locale "nonsense-nowhere" has unknown language "nonsense" +HINT: To disable ICU locale validation, set parameter icu_validation_level to DISABLED. +RESET icu_validation_level; CREATE COLLATION test4 FROM nonsense; ERROR: collation "nonsense" for encoding "UTF8" does not exist CREATE COLLATION test5 FROM test0; diff --git a/src/test/regress/sql/collate.icu.utf8.sql b/src/test/regress/sql/collate.icu.utf8.sql index 8105ebc8ae..95d96f2eb8 100644 --- a/src/test/regress/sql/collate.icu.utf8.sql +++ b/src/test/regress/sql/collate.icu.utf8.sql @@ -371,7 +371,10 @@ BEGIN END $$; CREATE COLLATION test3 (provider = icu, lc_collate = 'en_US.utf8'); -- fail, needs "locale" -CREATE COLLATION testx (provider = icu, locale = 'nonsense'); /* never fails with ICU */ DROP COLLATION testx; +CREATE COLLATION testx (provider = icu, locale = 'nonsense-nowhere'); -- fails +SET icu_validation_level = WARNING; +CREATE COLLATION testx (provider = icu, locale = 'nonsense-nowhere'); DROP COLLATION testx; +RESET icu_validation_level; CREATE COLLATION test4 FROM nonsense; CREATE COLLATION test5 FROM test0; |
