diff options
author | Fujii Masao <fujii@postgresql.org> | 2014-08-19 18:30:38 +0900 |
---|---|---|
committer | Fujii Masao <fujii@postgresql.org> | 2014-08-19 18:30:38 +0900 |
commit | c4762886539b06da682045e19ba73dcee3789638 (patch) | |
tree | 804ecf6fff27078e7f5f4827c84e6fe5aa5dccfd | |
parent | 083d29c65b7897f90c70e6dc0a4240a5fa75c8f2 (diff) | |
download | postgresql-c4762886539b06da682045e19ba73dcee3789638.tar.gz postgresql-c4762886539b06da682045e19ba73dcee3789638.zip |
Revert "Fix bug in checking of IDENTIFY_SYSTEM result."
This reverts commit 083d29c65b7897f90c70e6dc0a4240a5fa75c8f2.
The commit changed the code so that it causes an errors when
IDENTIFY_SYSTEM returns three columns. But which prevents us
from using the replication-related utilities against the server
with older version. This is not what we want. For that
compatibility, we allow the utilities to receive three columns
as the result of IDENTIFY_SYSTEM eventhough it actually returns
four columns in 9.4 or later.
Pointed out by Andres Freund.
-rw-r--r-- | src/backend/replication/libpqwalreceiver/libpqwalreceiver.c | 4 | ||||
-rw-r--r-- | src/bin/pg_basebackup/pg_basebackup.c | 4 | ||||
-rw-r--r-- | src/bin/pg_basebackup/pg_receivexlog.c | 4 | ||||
-rw-r--r-- | src/bin/pg_basebackup/receivelog.c | 4 |
4 files changed, 8 insertions, 8 deletions
diff --git a/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c b/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c index 7049f12296b..65e95c59f02 100644 --- a/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c +++ b/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c @@ -131,7 +131,7 @@ libpqrcv_identify_system(TimeLineID *primary_tli) "the primary server: %s", PQerrorMessage(streamConn)))); } - if (PQnfields(res) < 4 || PQntuples(res) != 1) + if (PQnfields(res) < 3 || PQntuples(res) != 1) { int ntuples = PQntuples(res); int nfields = PQnfields(res); @@ -140,7 +140,7 @@ libpqrcv_identify_system(TimeLineID *primary_tli) ereport(ERROR, (errmsg("invalid response from primary server"), errdetail("Could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields.", - ntuples, nfields, 4, 1))); + ntuples, nfields, 3, 1))); } primary_sysid = PQgetvalue(res, 0, 0); *primary_tli = pg_atoi(PQgetvalue(res, 0, 1), 4, 0); diff --git a/src/bin/pg_basebackup/pg_basebackup.c b/src/bin/pg_basebackup/pg_basebackup.c index 3fee38a17d6..3d26e22b8fc 100644 --- a/src/bin/pg_basebackup/pg_basebackup.c +++ b/src/bin/pg_basebackup/pg_basebackup.c @@ -1644,11 +1644,11 @@ BaseBackup(void) progname, "IDENTIFY_SYSTEM", PQerrorMessage(conn)); disconnect_and_exit(1); } - if (PQntuples(res) != 1 || PQnfields(res) < 4) + if (PQntuples(res) != 1 || PQnfields(res) < 3) { fprintf(stderr, _("%s: could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields\n"), - progname, PQntuples(res), PQnfields(res), 1, 4); + progname, PQntuples(res), PQnfields(res), 1, 3); disconnect_and_exit(1); } sysidentifier = pg_strdup(PQgetvalue(res, 0, 0)); diff --git a/src/bin/pg_basebackup/pg_receivexlog.c b/src/bin/pg_basebackup/pg_receivexlog.c index 525522adc73..a8b9ad3c05f 100644 --- a/src/bin/pg_basebackup/pg_receivexlog.c +++ b/src/bin/pg_basebackup/pg_receivexlog.c @@ -290,11 +290,11 @@ StreamLog(void) progname, "IDENTIFY_SYSTEM", PQerrorMessage(conn)); disconnect_and_exit(1); } - if (PQntuples(res) != 1 || PQnfields(res) < 4) + if (PQntuples(res) != 1 || PQnfields(res) < 3) { fprintf(stderr, _("%s: could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields\n"), - progname, PQntuples(res), PQnfields(res), 1, 4); + progname, PQntuples(res), PQnfields(res), 1, 3); disconnect_and_exit(1); } servertli = atoi(PQgetvalue(res, 0, 1)); diff --git a/src/bin/pg_basebackup/receivelog.c b/src/bin/pg_basebackup/receivelog.c index 7cdb3b1214c..89b22f20e2a 100644 --- a/src/bin/pg_basebackup/receivelog.c +++ b/src/bin/pg_basebackup/receivelog.c @@ -499,11 +499,11 @@ ReceiveXlogStream(PGconn *conn, XLogRecPtr startpos, uint32 timeline, PQclear(res); return false; } - if (PQntuples(res) != 1 || PQnfields(res) < 4) + if (PQntuples(res) != 1 || PQnfields(res) < 3) { fprintf(stderr, _("%s: could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields\n"), - progname, PQntuples(res), PQnfields(res), 1, 4); + progname, PQntuples(res), PQnfields(res), 1, 3); PQclear(res); return false; } |