"the primary server: %s",
PQerrorMessage(streamConn))));
}
- if (PQnfields(res) != 4 || PQntuples(res) != 1)
+ if (PQnfields(res) != 5 || PQntuples(res) != 1)
{
int ntuples = PQntuples(res);
int nfields = PQnfields(res);
PQclear(res);
ereport(ERROR,
(errmsg("invalid response from primary server"),
- errdetail("Expected 1 tuple with 4 fields, got %d tuples with %d fields.",
+ errdetail("Expected 1 tuple with 5 fields, got %d tuples with %d fields.",
ntuples, nfields)));
}
primary_sysid = PQgetvalue(res, 0, 0);
char tli[11];
char xpos[MAXFNAMELEN];
XLogRecPtr logptr;
- char* dbname = NULL;
+ char *dbname = NULL;
+ char dboid[10];
/*
* Reply with a result set with one row, four columns. First col is system
snprintf(xpos, sizeof(xpos), "%X/%X", (uint32) (logptr >> 32), (uint32) logptr);
if (MyDatabaseId != InvalidOid)
+ {
dbname = get_database_name(MyDatabaseId);
+ sprintf(dboid, "%u", MyDatabaseId);
+ }
/* Send a RowDescription message */
pq_beginmessage(&buf, 'T');
- pq_sendint(&buf, 4, 2); /* 4 fields */
+ pq_sendint(&buf, 5, 2); /* 5 fields */
/* first field */
pq_sendstring(&buf, "systemid"); /* col name */
pq_sendint(&buf, -1, 2); /* typlen */
pq_sendint(&buf, 0, 4); /* typmod */
pq_sendint(&buf, 0, 2); /* format code */
+
+ /* fifth field */
+ pq_sendstring(&buf, "dboid"); /* col name */
+ pq_sendint(&buf, 0, 4); /* table oid */
+ pq_sendint(&buf, 0, 2); /* attnum */
+ pq_sendint(&buf, INT4OID, 4); /* type oid */
+ pq_sendint(&buf, 4, 2); /* typlen */
+ pq_sendint(&buf, 0, 4); /* typmod */
+ pq_sendint(&buf, 0, 2); /* format code */
+
pq_endmessage(&buf);
/* Send a DataRow message */
pq_beginmessage(&buf, 'D');
- pq_sendint(&buf, 4, 2); /* # of columns */
+ pq_sendint(&buf, 5, 2); /* # of columns */
pq_sendint(&buf, strlen(sysid), 4); /* col1 len */
pq_sendbytes(&buf, (char *) &sysid, strlen(sysid));
pq_sendint(&buf, strlen(tli), 4); /* col2 len */
{
pq_sendint(&buf, strlen(dbname), 4); /* col4 len */
pq_sendbytes(&buf, (char *) dbname, strlen(dbname));
+
+ pq_sendint(&buf, strlen(dboid), 4); /* col5 len */
+ pq_sendbytes(&buf, dboid, strlen(dboid));
}
else
{
pq_sendint(&buf, -1, 4); /* col4 len */
+ pq_sendint(&buf, -1, 4); /* col5 len */
}
pq_endmessage(&buf);
}
progname, "IDENTIFY_SYSTEM", PQerrorMessage(conn));
disconnect_and_exit(1);
}
- if (PQntuples(res) != 1 || PQnfields(res) != 4)
+ if (PQntuples(res) != 1 || PQnfields(res) != 5)
{
fprintf(stderr,
_("%s: could not identify system: got %d rows and %d fields, expected %d rows and %d fields\n"),
- progname, PQntuples(res), PQnfields(res), 1, 4);
+ progname, PQntuples(res), PQnfields(res), 1, 5);
disconnect_and_exit(1);
}
sysidentifier = pg_strdup(PQgetvalue(res, 0, 0));
progname, "IDENTIFY_SYSTEM", PQerrorMessage(conn));
disconnect_and_exit(1);
}
- if (PQntuples(res) != 1 || PQnfields(res) != 4)
+ if (PQntuples(res) != 1 || PQnfields(res) != 5)
{
fprintf(stderr,
_("%s: could not identify system: got %d rows and %d fields, expected %d rows and %d fields\n"),
- progname, PQntuples(res), PQnfields(res), 1, 4);
+ progname, PQntuples(res), PQnfields(res), 1, 5);
disconnect_and_exit(1);
}
servertli = atoi(PQgetvalue(res, 0, 1));