]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
pg_dumpall: simplify coding of dropDBs()
authorÁlvaro Herrera <alvherre@kurilemu.de>
Tue, 10 Mar 2026 15:00:19 +0000 (16:00 +0100)
committerÁlvaro Herrera <alvherre@kurilemu.de>
Tue, 10 Mar 2026 15:00:19 +0000 (16:00 +0100)
There's no need for a StringInfo when all you want is a string
being constructed in a single pass.

Author: Álvaro Herrera <alvherre@kurilemu.de>
Reported-by: Ranier Vilela <ranier.vf@gmail.com>
Reviewed-by: Yang Yuanzhuo <1197620467@qq.com>
Reviewed-by: Michael Paquier <michael@paquier.xyz>
Reviewed-by: Andrew Dunstan <andrew@dunslane.net>
Discussion: https://postgr.es/m/CAEudQAq2wyXZRdsh+wVHcOrungPU+_aQeQU12wbcgrmE0bQovA@mail.gmail.com

src/bin/pg_dump/pg_dumpall.c

index b29eaa819388ce41fc72042aa91d077bf32f75c3..3d2a1d27aefddf32e517dc43b1dfc1d84f2c09ff 100644 (file)
@@ -1833,7 +1833,6 @@ dropDBs(PGconn *conn)
        for (i = 0; i < PQntuples(res); i++)
        {
                char       *dbname = PQgetvalue(res, i, 0);
-               PQExpBuffer delQry = createPQExpBuffer();
 
                /*
                 * Skip "postgres" and "template1"; dumpDatabases() will deal with
@@ -1846,15 +1845,14 @@ dropDBs(PGconn *conn)
                {
                        if (archDumpFormat == archNull)
                        {
-                               appendPQExpBuffer(delQry, "DROP DATABASE %s%s;\n",
-                                                                 if_exists ? "IF EXISTS " : "",
-                                                                 fmtId(dbname));
-                               fprintf(OPF, "%s", delQry->data);
+                               fprintf(OPF, "DROP DATABASE %s%s;\n",
+                                               if_exists ? "IF EXISTS " : "",
+                                               fmtId(dbname));
                        }
                        else
                        {
-                               appendPQExpBuffer(delQry, "DROP DATABASE IF EXISTS %s;\n",
-                                                                 fmtId(dbname));
+                               char       *stmt = psprintf("DROP DATABASE IF EXISTS %s;\n",
+                                                                                       fmtId(dbname));
 
                                ArchiveEntry(fout,
                                                         nilCatalogId,  /* catalog ID */
@@ -1862,10 +1860,9 @@ dropDBs(PGconn *conn)
                                                         ARCHIVE_OPTS(.tag = psprintf("DATABASE %s", fmtId(dbname)),
                                                                                  .description = "DROP_GLOBAL",
                                                                                  .section = SECTION_PRE_DATA,
-                                                                                 .createStmt = delQry->data));
+                                                                                 .createStmt = stmt));
+                               pg_free(stmt);
                        }
-
-                       destroyPQExpBuffer(delQry);
                }
        }