From be809f16ecdeadd64a56dfad0a853be6a6af1658 Mon Sep 17 00:00:00 2001 From: Daniel Gustafsson Date: Wed, 3 Jul 2024 09:12:12 +0200 Subject: [PATCH v2 2/2] Add fastpaths for when no objects are found If there are no objects found, there is no reason to inspect the result columns and mallocing a zero-sized (which will be 1 byte in reality) heap buffer for it. Add fast-paths like how other object inspection functions are already doing it. --- src/bin/pg_dump/pg_dump.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 48efc61406..dc99964be6 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -4243,6 +4243,9 @@ getPublications(Archive *fout) ntups = PQntuples(res); + if (ntups == 0) + goto cleanup; + i_tableoid = PQfnumber(res, "tableoid"); i_oid = PQfnumber(res, "oid"); i_pubname = PQfnumber(res, "pubname"); @@ -4281,6 +4284,8 @@ getPublications(Archive *fout) /* Decide whether we want to dump it */ selectDumpableObject(&(pubinfo[i].dobj), fout); } + +cleanup: PQclear(res); destroyPQExpBuffer(query); @@ -5729,7 +5734,7 @@ getExtensions(Archive *fout, int *numExtensions) int ntups; int i; PQExpBuffer query; - ExtensionInfo *extinfo; + ExtensionInfo *extinfo = NULL; int i_tableoid; int i_oid; int i_extname; @@ -5749,6 +5754,8 @@ getExtensions(Archive *fout, int *numExtensions) res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK); ntups = PQntuples(res); + if (ntups == 0) + goto cleanup; extinfo = (ExtensionInfo *) pg_malloc(ntups * sizeof(ExtensionInfo)); @@ -5778,6 +5785,7 @@ getExtensions(Archive *fout, int *numExtensions) selectDumpableExtension(&(extinfo[i]), dopt); } +cleanup: PQclear(res); destroyPQExpBuffer(query); -- 2.39.3 (Apple Git-146)