Add GUC_LIST_INPUT and GUC_LIST_QUOTE to unix_socket_directories
authorMichael Paquier <[email protected]>
Sat, 7 Nov 2020 01:30:22 +0000 (10:30 +0900)
committerMichael Paquier <[email protected]>
Sat, 7 Nov 2020 01:30:22 +0000 (10:30 +0900)
This should have been done in the initial commit that made
unix_socket_directories a list as of c9b0cbe.  This change allows to
support correctly the case of ALTER SYSTEM, where it is possible to
specify multiple paths as a list, like the following pattern where
flattening is applied to each item:
ALTER SYSTEM SET unix_socket_directories = '/path1', '/path2';

Any parameters specified in postgresql.conf are parsed the same way, so
there is no compatibility change.  pg_dump has a hardcoded list of
parameters marked with GUC_LIST_QUOTE, that gets its routine update.
These are reordered alphabetically for clarity.

Author: Ian Lawrence Barwick
Reviewed-by: Peter Eisentraunt, Tom Lane, Michael Paquier
Discussion: https://postgr.es/m/CAB8KJ=iMOtNY6_sUwV=LQVCJ2zgYHBDyNzVfvE5GN3WQ3v9kQg@mail.gmail.com

src/backend/utils/misc/guc.c
src/bin/pg_dump/dumputils.c

index a62d64eaa4794a3c8b139558ba54a7f7746964cc..bb34630e8e449e6bcf09310844388fd80015c44d 100644 (file)
@@ -4173,7 +4173,7 @@ static struct config_string ConfigureNamesString[] =
        {"unix_socket_directories", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
            gettext_noop("Sets the directories where Unix-domain sockets will be created."),
            NULL,
-           GUC_SUPERUSER_ONLY
+           GUC_LIST_INPUT | GUC_LIST_QUOTE | GUC_SUPERUSER_ONLY
        },
        &Unix_socket_directories,
 #ifdef HAVE_UNIX_SOCKETS
index 2d6ea13c4554af07e0e8fea081737272ca736454..536c9ffec8cde8f217ccd81b7bad341c38032d59 100644 (file)
@@ -865,11 +865,12 @@ buildACLQueries(PQExpBuffer acl_subquery, PQExpBuffer racl_subquery,
 bool
 variable_is_guc_list_quote(const char *name)
 {
-   if (pg_strcasecmp(name, "temp_tablespaces") == 0 ||
+   if (pg_strcasecmp(name, "local_preload_libraries") == 0 ||
+       pg_strcasecmp(name, "search_path") == 0 ||
        pg_strcasecmp(name, "session_preload_libraries") == 0 ||
        pg_strcasecmp(name, "shared_preload_libraries") == 0 ||
-       pg_strcasecmp(name, "local_preload_libraries") == 0 ||
-       pg_strcasecmp(name, "search_path") == 0)
+       pg_strcasecmp(name, "temp_tablespaces") == 0 ||
+       pg_strcasecmp(name, "unix_socket_directories") == 0)
        return true;
    else
        return false;