summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Gustafsson2024-10-02 11:08:55 +0000
committerDaniel Gustafsson2024-10-02 11:08:55 +0000
commit9c733951049bf3993c886d7f2c7459e7439a9793 (patch)
treeb2c40a6989ee750b0815a6c8bdd7cfd4b9f0375a
parent1a123e3b136bf38ebf5f7a97b358306998f8a61f (diff)
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 a fast-path for immediately returning like how other object inspection functions are already doing it. Reviewed-by: Ranier Vilela <ranier.vf@gmail.com> Discussion: https://postgr.es/m/C2F05B3C-1414-45DD-AE09-6FEE4D0F89BD@yesql.se
-rw-r--r--src/bin/pg_dump/pg_dump.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index c29a2030af3..4dfb7d1abe4 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -4314,6 +4314,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");
@@ -4352,6 +4355,8 @@ getPublications(Archive *fout)
/* Decide whether we want to dump it */
selectDumpableObject(&(pubinfo[i].dobj), fout);
}
+
+cleanup:
PQclear(res);
destroyPQExpBuffer(query);
@@ -5817,7 +5822,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;
@@ -5837,6 +5842,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));
@@ -5866,6 +5873,7 @@ getExtensions(Archive *fout, int *numExtensions)
selectDumpableExtension(&(extinfo[i]), dopt);
}
+cleanup:
PQclear(res);
destroyPQExpBuffer(query);