public inbox for [email protected]
help / color / mirror / Atom feedFrom: Daniel Gustafsson <[email protected]>
To: PostgreSQL Hackers <[email protected]>
Subject: Fix PGresult leak in pg_dump during binary upgrade
Date: Wed, 15 May 2024 20:40:43 +0200
Message-ID: <[email protected]> (raw)
While looking at pg_dump performance today I noticed that pg_dump fails to
clear query results in binary_upgrade_set_pg_class_oids during binary upgrade
mode. 9a974cbcba00 moved the query to the outer block, but left the PQclear
and query buffer destruction in the is_index conditional, making it not always
be executed. 353708e1fb2d fixed the leak of the query buffer but left the
PGresult leak. The attached fixes the PGresult leak which when upgrading large
schemas can be non-trivial.
This needs to be backpatched down to v15.
--
Daniel Gustafsson
Attachments:
[application/octet-stream] 0001-Fix-query-result-leak-during-binary-upgrade.patch (1.3K, ../[email protected]/2-0001-Fix-query-result-leak-during-binary-upgrade.patch)
download | inline diff:
From 6d6f286d62d211e2238948c1ab8d7dd3d5f6c00a Mon Sep 17 00:00:00 2001
From: Daniel Gustafsson <[email protected]>
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)
view thread (2+ messages)
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected]
Subject: Re: Fix PGresult leak in pg_dump during binary upgrade
In-Reply-To: <[email protected]>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox