Fix bug in checking of IDENTIFY_SYSTEM result.
5a991ef8692ed0d170b44958a81a6bd70e90585 added new column into the result of IDENTIFY_SYSTEM command. But it was not reflected into several codes checking that result. Specifically though the number of columns in the result was increased to 4, it was still compared with 3 in some replication codes. Back-patch to 9.4 where the number of columns in IDENTIFY_SYSTEM result was increased. Report from Michael Paquier
This commit is contained in:
parent
8605bc7521
commit
083d29c65b
@ -131,7 +131,7 @@ libpqrcv_identify_system(TimeLineID *primary_tli)
|
||||
"the primary server: %s",
|
||||
PQerrorMessage(streamConn))));
|
||||
}
|
||||
if (PQnfields(res) < 3 || PQntuples(res) != 1)
|
||||
if (PQnfields(res) < 4 || 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, 3, 1)));
|
||||
ntuples, nfields, 4, 1)));
|
||||
}
|
||||
primary_sysid = PQgetvalue(res, 0, 0);
|
||||
*primary_tli = pg_atoi(PQgetvalue(res, 0, 1), 4, 0);
|
||||
|
@ -1644,11 +1644,11 @@ BaseBackup(void)
|
||||
progname, "IDENTIFY_SYSTEM", PQerrorMessage(conn));
|
||||
disconnect_and_exit(1);
|
||||
}
|
||||
if (PQntuples(res) != 1 || PQnfields(res) < 3)
|
||||
if (PQntuples(res) != 1 || PQnfields(res) < 4)
|
||||
{
|
||||
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, 3);
|
||||
progname, PQntuples(res), PQnfields(res), 1, 4);
|
||||
disconnect_and_exit(1);
|
||||
}
|
||||
sysidentifier = pg_strdup(PQgetvalue(res, 0, 0));
|
||||
|
@ -290,11 +290,11 @@ StreamLog(void)
|
||||
progname, "IDENTIFY_SYSTEM", PQerrorMessage(conn));
|
||||
disconnect_and_exit(1);
|
||||
}
|
||||
if (PQntuples(res) != 1 || PQnfields(res) < 3)
|
||||
if (PQntuples(res) != 1 || PQnfields(res) < 4)
|
||||
{
|
||||
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, 3);
|
||||
progname, PQntuples(res), PQnfields(res), 1, 4);
|
||||
disconnect_and_exit(1);
|
||||
}
|
||||
servertli = atoi(PQgetvalue(res, 0, 1));
|
||||
|
@ -499,11 +499,11 @@ ReceiveXlogStream(PGconn *conn, XLogRecPtr startpos, uint32 timeline,
|
||||
PQclear(res);
|
||||
return false;
|
||||
}
|
||||
if (PQntuples(res) != 1 || PQnfields(res) < 3)
|
||||
if (PQntuples(res) != 1 || PQnfields(res) < 4)
|
||||
{
|
||||
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, 3);
|
||||
progname, PQntuples(res), PQnfields(res), 1, 4);
|
||||
PQclear(res);
|
||||
return false;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user