From: Nathan Bossart <nathandbossart@gmail.com>
To: pgsql-hackers@postgresql.org
Subject: add missing PQfinish() calls to vacuumdb
Date: Tue, 4 Feb 2025 10:30:58 -0600
Message-ID: <Z6JAwqN1I8ljTuXp@nathan> (raw)
I noticed that vacuum_one_database() doesn't call PQfinish() before
pg_fatal() in a few of the server version checks. I seem to have
unintentionally established this precedent in commit 00d1e88. Michael
claimed to have fixed it before committing [0], but that seems to have been
missed, too. I don't think this is a huge problem, but it does seem nicer
to properly close the connection before exiting. If there are no
objections, I plan to commit and back-patch the attached patch shortly.
[0] https://postgr.es/m/20190108020300.GH22498%40paquier.xyz
--
nathan
Attachments:v1-0001-vacuumdb-Add-missing-PQfinish-calls-to-vacuum_one.patch (text/plain, 1.6K) download
From be653f97707929e6b7767dc41b34c14c8b9a798b Mon Sep 17 00:00:00 2001
From: Nathan Bossart <nathan@postgresql.org>
Date: Tue, 4 Feb 2025 10:24:09 -0600
Subject: [PATCH v1 1/1] vacuumdb: Add missing PQfinish() calls to
vacuum_one_database().
---
src/bin/scripts/vacuumdb.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/src/bin/scripts/vacuumdb.c b/src/bin/scripts/vacuumdb.cindex 3dc428674ae..74fbc7ef033 100644--- a/src/bin/scripts/vacuumdb.c+++ b/src/bin/scripts/vacuumdb.c@@ -557,20 +557,32 @@ vacuum_one_database(ConnParams *cparams,
}
if (vacopts->min_xid_age != 0 && PQserverVersion(conn) < 90600)
+ {+ PQfinish(conn);
pg_fatal("cannot use the \"%s\" option on server versions older than PostgreSQL %s",
"--min-xid-age", "9.6");
+ }
if (vacopts->min_mxid_age != 0 && PQserverVersion(conn) < 90600)
+ {+ PQfinish(conn);
pg_fatal("cannot use the \"%s\" option on server versions older than PostgreSQL %s",
"--min-mxid-age", "9.6");
+ }
if (vacopts->parallel_workers >= 0 && PQserverVersion(conn) < 130000)
+ {+ PQfinish(conn);
pg_fatal("cannot use the \"%s\" option on server versions older than PostgreSQL %s",
"--parallel", "13");
+ }
if (vacopts->buffer_usage_limit && PQserverVersion(conn) < 160000)
+ {+ PQfinish(conn);
pg_fatal("cannot use the \"%s\" option on server versions older than PostgreSQL %s",
"--buffer-usage-limit", "16");
+ }
/* skip_database_stats is used automatically if server supports it */
vacopts->skip_database_stats = (PQserverVersion(conn) >= 160000);
--
2.39.5 (Apple Git-154)
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: pgsql-hackers@postgresql.org
Cc: nathandbossart@gmail.com
Subject: Re: add missing PQfinish() calls to vacuumdb
In-Reply-To: <Z6JAwqN1I8ljTuXp@nathan>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox