Fix query result leak during binary upgrade
authorDaniel Gustafsson <[email protected]>
Wed, 15 May 2024 20:48:51 +0000 (22:48 +0200)
committerDaniel Gustafsson <[email protected]>
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 <[email protected]>
Discussion: https://postgr.es/m/374550C1-F4ED-4D9D-9498-0FD029CCF674@yesql.se
Backpatch-through: v15

src/bin/pg_dump/pg_dump.c

index 6e1b070e6fa89d075c7bb1ce7ed70cf8555ca14e..300fe071fc81b2f65d35e551cb30dc3a4ee740fa 100644 (file)
@@ -5127,8 +5127,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_relfilenumber);
        }
-
-       PQclear(upgrade_res);
    }
    else
    {
@@ -5141,6 +5139,8 @@ binary_upgrade_set_pg_class_oids(Archive *fout,
                          relfilenumber);
    }
 
+   PQclear(upgrade_res);
+
    appendPQExpBufferChar(upgrade_buffer, '\n');
 
    destroyPQExpBuffer(upgrade_query);