Improve log messages from pg_import_system_collations().
authorTom Lane <[email protected]>
Tue, 14 Sep 2021 22:55:15 +0000 (18:55 -0400)
committerTom Lane <[email protected]>
Tue, 14 Sep 2021 22:55:15 +0000 (18:55 -0400)
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

src/backend/commands/collationcmds.c

index 4075f991a03b7bb587496ba529ecad16db729012..53fc579f37007cf02f4eab05aec7828361a08d8c 100644 (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 */