Add extra descriptive headings in pg_dumpall
authorAndrew Dunstan <[email protected]>
Fri, 1 Mar 2019 16:38:54 +0000 (11:38 -0500)
committerAndrew Dunstan <[email protected]>
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