Add extra descriptive headings in pg_dumpall
authorAndrew Dunstan <andrew@dunslane.net>
Fri, 1 Mar 2019 16:38:54 +0000 (11:38 -0500)
committerAndrew Dunstan <andrew@dunslane.net>
Fri, 1 Mar 2019 16:38:54 +0000 (11:38 -0500)
Headings are added for the User Configurations and Databases sections,
and for each user configuration and database in the output.

Author: Fabien Coelho
Discussion: https://postgr.es/m/alpine.DEB.2.21.1812272222130.32444@lancre

src/bin/pg_dump/pg_dumpall.c

index 773bbdd04c1bfaec41a74039315aca3b0a9e0a6a..a86965e67022594a1f2e32b73c164269ff8b12c2 100644 (file)
@@ -1346,6 +1346,7 @@ dumpUserConfig(PGconn *conn, const char *username)
 {
        PQExpBuffer buf = createPQExpBuffer();
        int                     count = 1;
+       bool            first = true;
 
        for (;;)
        {
@@ -1367,6 +1368,14 @@ dumpUserConfig(PGconn *conn, const char *username)
                if (PQntuples(res) == 1 &&
                        !PQgetisnull(res, 0, 0))
                {
+                       /* comment at section start, only if needed */
+                       if (first)
+                       {
+                               fprintf(OPF, "--\n-- User Configurations\n--\n\n");
+                               first = false;
+                       }
+
+                       fprintf(OPF, "--\n-- User Config \"%s\"\n--\n\n", username);
                        resetPQExpBuffer(buf);
                        makeAlterConfigCommand(conn, PQgetvalue(res, 0, 0),
                                                                   "ROLE", username, NULL, NULL,
@@ -1454,6 +1463,9 @@ dumpDatabases(PGconn *conn)
                                           "WHERE datallowconn "
                                           "ORDER BY (datname <> 'template1'), datname");
 
+       if (PQntuples(res) > 0)
+               fprintf(OPF, "--\n-- Databases\n--\n\n");
+
        for (i = 0; i < PQntuples(res); i++)
        {
                char       *dbname = PQgetvalue(res, i, 0);
@@ -1476,6 +1488,8 @@ dumpDatabases(PGconn *conn)
                if (verbose)
                        fprintf(stderr, _("%s: dumping database \"%s\"...\n"), progname, dbname);
 
+               fprintf(OPF, "--\n-- Database \"%s\" dump\n--\n\n", dbname);
+
                /*
                 * We assume that "template1" and "postgres" already exist in the
                 * target installation.  dropDBs() won't have removed them, for fear