]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Fix query result leak during binary upgrade
authorDaniel Gustafsson <dgustafsson@postgresql.org>
Wed, 15 May 2024 20:48:51 +0000 (22:48 +0200)
committerDaniel Gustafsson <dgustafsson@postgresql.org>
Wed, 15 May 2024 20:48:51 +0000 (22:48 +0200)
9a974cbcba00 moved the query in binary_upgrade_set_pg_class_oids to the
outer level, but left the PQclear and query buffer destruction in the
is_index conditional.  353708e1fb2d fixed the leak of the query buffer
but left the PGresult leak. This moves clearing the result to the outer
level ensuring that it will be called.

Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/374550C1-F4ED-4D9D-9498-0FD029CCF674@yesql.se
Backpatch-through: v15

src/bin/pg_dump/pg_dump.c

index cf34bfdba80c91aaec0b757b0064890ef1e8f73f..4ac992f7dbd7b0be24a278bcaf716a69cb1905ee 100644 (file)
@@ -4980,8 +4980,6 @@ binary_upgrade_set_pg_class_oids(Archive *fout,
                                                          "SELECT pg_catalog.binary_upgrade_set_next_index_relfilenode('%u'::pg_catalog.oid);\n",
                                                          toast_index_relfilenode);
                }
-
-               PQclear(upgrade_res);
        }
        else
        {
@@ -4994,6 +4992,8 @@ binary_upgrade_set_pg_class_oids(Archive *fout,
                                                  relfilenode);
        }
 
+       PQclear(upgrade_res);
+
        appendPQExpBufferChar(upgrade_buffer, '\n');
 
        destroyPQExpBuffer(upgrade_query);