Skip to content

Commit dd81eee

Browse files
committed
Use libpq's new logic to get the server version, instead of doing it ourselves.
1 parent e92dc1e commit dd81eee

File tree

2 files changed

+16
-26
lines changed

2 files changed

+16
-26
lines changed

src/bin/pg_dump/pg_backup_db.c

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* Implements the basic DB functions used by the archiver.
66
*
77
* IDENTIFICATION
8-
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_db.c,v 1.47 2003/05/14 03:26:02 tgl Exp $
8+
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_db.c,v 1.48 2003/06/22 00:56:58 tgl Exp $
99
*
1010
*-------------------------------------------------------------------------
1111
*/
@@ -53,29 +53,23 @@ _parse_version(ArchiveHandle *AH, const char *versionString)
5353
static void
5454
_check_database_version(ArchiveHandle *AH, bool ignoreVersion)
5555
{
56-
PGresult *res;
5756
int myversion;
5857
const char *remoteversion_str;
5958
int remoteversion;
60-
PGconn *conn = AH->connection;
6159

6260
myversion = _parse_version(AH, PG_VERSION);
6361

64-
res = PQexec(conn, "SELECT version();");
65-
if (!res ||
66-
PQresultStatus(res) != PGRES_TUPLES_OK ||
67-
PQntuples(res) != 1)
68-
die_horribly(AH, modulename, "could not get version from server: %s", PQerrorMessage(conn));
69-
70-
remoteversion_str = PQgetvalue(res, 0, 0);
71-
remoteversion = _parse_version(AH, remoteversion_str + 11);
62+
remoteversion_str = PQparameterStatus(AH->connection, "server_version");
63+
if (!remoteversion_str)
64+
die_horribly(AH, modulename, "could not get server_version from libpq\n");
7265

73-
PQclear(res);
66+
remoteversion = _parse_version(AH, remoteversion_str);
7467

7568
AH->public.remoteVersion = remoteversion;
7669

7770
if (myversion != remoteversion
78-
&& (remoteversion < AH->public.minRemoteVersion || remoteversion > AH->public.maxRemoteVersion))
71+
&& (remoteversion < AH->public.minRemoteVersion ||
72+
remoteversion > AH->public.maxRemoteVersion))
7973
{
8074
write_msg(NULL, "server version: %s; %s version: %s\n",
8175
remoteversion_str, progname, PG_VERSION);

src/bin/pg_dump/pg_dumpall.c

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* Portions Copyright (c) 1994, Regents of the University of California
77
*
88
*
9-
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.21 2003/06/11 05:13:11 momjian Exp $
9+
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.22 2003/06/22 00:56:58 tgl Exp $
1010
*
1111
*-------------------------------------------------------------------------
1212
*/
@@ -701,7 +701,7 @@ connectDatabase(const char *dbname, const char *pghost, const char *pgport,
701701
PGconn *conn;
702702
char *password = NULL;
703703
bool need_pass = false;
704-
PGresult *res;
704+
const char *remoteversion_str;
705705

706706
if (require_password)
707707
password = simple_prompt("Password: ", 100, false);
@@ -745,23 +745,19 @@ connectDatabase(const char *dbname, const char *pghost, const char *pgport,
745745
exit(1);
746746
}
747747

748-
res = executeQuery(conn, "SELECT version();");
749-
if (PQntuples(res) != 1)
748+
remoteversion_str = PQparameterStatus(conn, "server_version");
749+
if (!remoteversion_str)
750750
{
751751
fprintf(stderr, _("%s: could not get server version\n"), progname);
752752
exit(1);
753753
}
754-
else
754+
server_version = parse_version(remoteversion_str);
755+
if (server_version < 0)
755756
{
756-
char *val = PQgetvalue(res, 0, 0);
757-
server_version = parse_version(val + strcspn(val, "0123456789"));
758-
if (server_version < 0)
759-
{
760-
fprintf(stderr, _("%s: could not parse server version \"%s\"\n"), progname, val);
761-
exit(1);
762-
}
757+
fprintf(stderr, _("%s: could not parse server version \"%s\"\n"),
758+
progname, remoteversion_str);
759+
exit(1);
763760
}
764-
PQclear(res);
765761

766762
return conn;
767763
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy