Improve log messages from pg_import_system_collations().

pg_import_system_collations() was a bit inconsistent about how it
reported locales (names output by "locale -a") that it didn't make
pg_collation entries for.  IMV we should print some suitable message
for every locale that we reject, except when it matches a pre-existing
pg_collation entry.  (This is all at DEBUG1 log level, though, so as
not to create noise during initdb.)  Add messages for the two cases
that were previously not logged, namely unrecognized encoding and
client-only encoding.  Re-word the existing messages to have a
consistent style.

Anton Voloshin and Tom Lane

Discussion: https://postgr.es/m/429d64ee-188d-3ce1-106a-53a8b45c4fce@postgrespro.ru
This commit is contained in:
Tom Lane 2021-09-14 18:55:15 -04:00
parent 2e4eae87d0
commit 69e31d05b0
1 changed files with 8 additions and 4 deletions

View File

@ -576,7 +576,7 @@ pg_import_system_collations(PG_FUNCTION_ARGS)
if (len == 0 || localebuf[len - 1] != '\n')
{
elog(DEBUG1, "locale name too long, skipped: \"%s\"", localebuf);
elog(DEBUG1, "skipping locale with too-long name: \"%s\"", localebuf);
continue;
}
localebuf[len - 1] = '\0';
@ -590,18 +590,22 @@ pg_import_system_collations(PG_FUNCTION_ARGS)
*/
if (!pg_is_ascii(localebuf))
{
elog(DEBUG1, "locale name has non-ASCII characters, skipped: \"%s\"", localebuf);
elog(DEBUG1, "skipping locale with non-ASCII name: \"%s\"", localebuf);
continue;
}
enc = pg_get_encoding_from_locale(localebuf, false);
if (enc < 0)
{
/* error message printed by pg_get_encoding_from_locale() */
elog(DEBUG1, "skipping locale with unrecognized encoding: \"%s\"",
localebuf);
continue;
}
if (!PG_VALID_BE_ENCODING(enc))
continue; /* ignore locales for client-only encodings */
{
elog(DEBUG1, "skipping locale with client-only encoding: \"%s\"", localebuf);
continue;
}
if (enc == PG_SQL_ASCII)
continue; /* C/POSIX are already in the catalog */