Allow initdb to complete on systems without "locale" command
authorPeter Eisentraut <peter@eisentraut.org>
Thu, 17 Nov 2022 11:12:11 +0000 (12:12 +0100)
committerPeter Eisentraut <peter@eisentraut.org>
Thu, 17 Nov 2022 11:12:11 +0000 (12:12 +0100)
This partially reverts 2fe3bdbd691a5d11626308e7d660440be6c210c8, which
added an error check on the "locale -a" execution.  This is removed
again, adding a comment explaining why.  We already had code that
shows a warning if no system locales could be found, which should be
sufficient for feedback to the user.

Discussion: https://www.postgresql.org/message-id/flat/b2b491d1-3b36-15b9-6910-5b5540b27f5c%40enterprisedb.com

src/backend/commands/collationcmds.c

index e1429c7bf5fea3d24f578c6f714bec43de09eb23..81e54e0ce62ce3ed3a1e85f31c806facfb153e02 100644 (file)
@@ -640,7 +640,6 @@ pg_import_system_collations(PG_FUNCTION_ARGS)
        int         naliases,
                    maxaliases,
                    i;
-       int         pclose_rc;
 
        /* expansible array of aliases */
        maxaliases = 100;
@@ -747,15 +746,13 @@ pg_import_system_collations(PG_FUNCTION_ARGS)
            }
        }
 
-       pclose_rc = ClosePipeStream(locale_a_handle);
-       if (pclose_rc != 0)
-       {
-           ereport(ERROR,
-                   (errcode_for_file_access(),
-                    errmsg("could not execute command \"%s\": %s",
-                           "locale -a",
-                           wait_result_to_str(pclose_rc))));
-       }
+       /*
+        * We don't check the return value of this, because we want to support
+        * the case where there "locale" command does not exist.  (This is
+        * unusual but can happen on minimalized Linux distributions, for
+        * example.)  We will warn below if no locales could be found.
+        */
+       ClosePipeStream(locale_a_handle);
 
        /*
         * Before processing the aliases, sort them by locale name.  The point