From 6d6f286d62d211e2238948c1ab8d7dd3d5f6c00a Mon Sep 17 00:00:00 2001
From: Daniel Gustafsson <dgustafsson@postgresql.org>
Date: Wed, 15 May 2024 20:32:14 +0200
Subject: [PATCH] Fix query result leak during binary upgrade

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.
---
 src/bin/pg_dump/pg_dump.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index ac920f64c7..5dfa7b3bcb 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -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);
-- 
2.39.3 (Apple Git-146)

