mirror of
https://github.com/postgres/postgres.git
synced 2025-06-14 18:42:34 +03:00
Improve CREATE DATABASE error message for invalid libc locale.
Discussion: https://postgr.es/m/73959a14-267b-49c1-8293-291b175682cb@manitou-mail.org Reviewed-by: Daniel Verite <daniel@manitou-mail.org>
This commit is contained in:
@ -1065,16 +1065,41 @@ createdb(ParseState *pstate, const CreatedbStmt *stmt)
|
|||||||
|
|
||||||
/* Check that the chosen locales are valid, and get canonical spellings */
|
/* Check that the chosen locales are valid, and get canonical spellings */
|
||||||
if (!check_locale(LC_COLLATE, dbcollate, &canonname))
|
if (!check_locale(LC_COLLATE, dbcollate, &canonname))
|
||||||
ereport(ERROR,
|
{
|
||||||
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
|
if (dblocprovider == COLLPROVIDER_BUILTIN)
|
||||||
errmsg("invalid LC_COLLATE locale name: \"%s\"", dbcollate),
|
ereport(ERROR,
|
||||||
errhint("If the locale name is specific to ICU, use ICU_LOCALE.")));
|
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
|
||||||
|
errmsg("invalid LC_COLLATE locale name: \"%s\"", dbcollate),
|
||||||
|
errhint("If the locale name is specific to the builtin provider, use BUILTIN_LOCALE.")));
|
||||||
|
else if (dblocprovider == COLLPROVIDER_ICU)
|
||||||
|
ereport(ERROR,
|
||||||
|
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
|
||||||
|
errmsg("invalid LC_COLLATE locale name: \"%s\"", dbcollate),
|
||||||
|
errhint("If the locale name is specific to the ICU provider, use ICU_LOCALE.")));
|
||||||
|
else
|
||||||
|
ereport(ERROR,
|
||||||
|
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
|
||||||
|
errmsg("invalid LC_COLLATE locale name: \"%s\"", dbcollate)));
|
||||||
|
}
|
||||||
dbcollate = canonname;
|
dbcollate = canonname;
|
||||||
if (!check_locale(LC_CTYPE, dbctype, &canonname))
|
if (!check_locale(LC_CTYPE, dbctype, &canonname))
|
||||||
ereport(ERROR,
|
{
|
||||||
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
|
if (dblocprovider == COLLPROVIDER_BUILTIN)
|
||||||
errmsg("invalid LC_CTYPE locale name: \"%s\"", dbctype),
|
ereport(ERROR,
|
||||||
errhint("If the locale name is specific to ICU, use ICU_LOCALE.")));
|
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
|
||||||
|
errmsg("invalid LC_CTYPE locale name: \"%s\"", dbctype),
|
||||||
|
errhint("If the locale name is specific to the builtin provider, use BUILTIN_LOCALE.")));
|
||||||
|
else if (dblocprovider == COLLPROVIDER_ICU)
|
||||||
|
ereport(ERROR,
|
||||||
|
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
|
||||||
|
errmsg("invalid LC_CTYPE locale name: \"%s\"", dbctype),
|
||||||
|
errhint("If the locale name is specific to the ICU provider, use ICU_LOCALE.")));
|
||||||
|
else
|
||||||
|
ereport(ERROR,
|
||||||
|
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
|
||||||
|
errmsg("invalid LC_CTYPE locale name: \"%s\"", dbctype)));
|
||||||
|
}
|
||||||
|
|
||||||
dbctype = canonname;
|
dbctype = canonname;
|
||||||
|
|
||||||
check_encoding_locale_matches(encoding, dbcollate, dbctype);
|
check_encoding_locale_matches(encoding, dbcollate, dbctype);
|
||||||
|
Reference in New Issue
Block a user