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 ac920f64c736dd18938abe54fdab041f8a47a734..5dfa7b3bcba4e5fc8888b8e3220c9d28e1ba8f8d 100644 (file)
@@ -5479,8 +5479,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
    {
@@ -5493,6 +5491,8 @@ binary_upgrade_set_pg_class_oids(Archive *fout,
                          relfilenumber);
    }
 
+   PQclear(upgrade_res);
+
    appendPQExpBufferChar(upgrade_buffer, '\n');
 
    destroyPQExpBuffer(upgrade_query);