From: Álvaro Herrera Date: Tue, 10 Mar 2026 15:00:19 +0000 (+0100) Subject: pg_dumpall: simplify coding of dropDBs() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a198c26dede50a1fd4c22fb134b53ce8d4f8f5e3;p=thirdparty%2Fpostgresql.git pg_dumpall: simplify coding of dropDBs() There's no need for a StringInfo when all you want is a string being constructed in a single pass. Author: Álvaro Herrera Reported-by: Ranier Vilela Reviewed-by: Yang Yuanzhuo <1197620467@qq.com> Reviewed-by: Michael Paquier Reviewed-by: Andrew Dunstan Discussion: https://postgr.es/m/CAEudQAq2wyXZRdsh+wVHcOrungPU+_aQeQU12wbcgrmE0bQovA@mail.gmail.com --- diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c index b29eaa81938..3d2a1d27aef 100644 --- a/src/bin/pg_dump/pg_dumpall.c +++ b/src/bin/pg_dump/pg_dumpall.c @@ -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); } }