Commit 3cf6e948 authored by Philip Warner's avatar Philip Warner

Use new datlastsysoid field in pg_database + some cleanups & fixes

parent 4ac17421
...@@ -220,6 +220,7 @@ void RestoreArchive(Archive* AHX, RestoreOptions *ropt) ...@@ -220,6 +220,7 @@ void RestoreArchive(Archive* AHX, RestoreOptions *ropt)
*/ */
if (!AH->CustomOutPtr) if (!AH->CustomOutPtr)
fprintf(stderr, "%s: WARNING - skipping BLOB restoration\n", progname); fprintf(stderr, "%s: WARNING - skipping BLOB restoration\n", progname);
} else { } else {
_disableTriggers(AH, te, ropt); _disableTriggers(AH, te, ropt);
...@@ -951,6 +952,10 @@ int ahwrite(const void *ptr, size_t size, size_t nmemb, ArchiveHandle* AH) ...@@ -951,6 +952,10 @@ int ahwrite(const void *ptr, size_t size, size_t nmemb, ArchiveHandle* AH)
{ {
res = lo_write(AH->connection, AH->loFd, (void*)ptr, size * nmemb); res = lo_write(AH->connection, AH->loFd, (void*)ptr, size * nmemb);
ahlog(AH, 5, "Wrote %d bytes of BLOB data (result = %d)\n", size * nmemb, res); ahlog(AH, 5, "Wrote %d bytes of BLOB data (result = %d)\n", size * nmemb, res);
if (res < size * nmemb)
die_horribly(AH, "%s: could not write to large object (result = %d, expected %d)\n",
progname, res, size * nmemb);
return res; return res;
} }
else if (AH->gzOut) else if (AH->gzOut)
......
...@@ -62,7 +62,7 @@ typedef z_stream *z_streamp; ...@@ -62,7 +62,7 @@ typedef z_stream *z_streamp;
#define K_VERS_MAJOR 1 #define K_VERS_MAJOR 1
#define K_VERS_MINOR 4 #define K_VERS_MINOR 4
#define K_VERS_REV 17 #define K_VERS_REV 19
/* Data block types */ /* Data block types */
#define BLK_DATA 1 #define BLK_DATA 1
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.172 2000/10/22 05:27:18 momjian Exp $ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.173 2000/10/22 18:13:09 pjw Exp $
* *
* Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb * Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
* *
...@@ -140,7 +140,7 @@ static char *checkForQuote(const char *s); ...@@ -140,7 +140,7 @@ static char *checkForQuote(const char *s);
static void clearTableInfo(TableInfo *, int); static void clearTableInfo(TableInfo *, int);
static void dumpOneFunc(Archive *fout, FuncInfo *finfo, int i, static void dumpOneFunc(Archive *fout, FuncInfo *finfo, int i,
TypeInfo *tinfo, int numTypes); TypeInfo *tinfo, int numTypes);
static int findLastBuiltinOid(void); static int findLastBuiltinOid(const char*);
static void setMaxOid(Archive *fout); static void setMaxOid(Archive *fout);
static void AddAcl(char *aclbuf, const char *keyword); static void AddAcl(char *aclbuf, const char *keyword);
...@@ -954,7 +954,7 @@ main(int argc, char **argv) ...@@ -954,7 +954,7 @@ main(int argc, char **argv)
PQclear(res); PQclear(res);
} }
g_last_builtin_oid = findLastBuiltinOid(); g_last_builtin_oid = findLastBuiltinOid(dbname);
/* Dump the database definition */ /* Dump the database definition */
if (!dataOnly) if (!dataOnly)
...@@ -3888,14 +3888,17 @@ setMaxOid(Archive *fout) ...@@ -3888,14 +3888,17 @@ setMaxOid(Archive *fout)
*/ */
static int static int
findLastBuiltinOid(void) findLastBuiltinOid(const char* dbname)
{ {
PGresult *res; PGresult *res;
int ntups; int ntups;
int last_oid; int last_oid;
PQExpBuffer query = createPQExpBuffer();
resetPQExpBuffer(query);
appendPQExpBuffer(query, "SELECT datlastsysoid from pg_database where datname = '%s'", dbname);
res = PQexec(g_conn, res = PQexec(g_conn, query->data);
"SELECT oid from pg_database where datname = 'template1'");
if (res == NULL || if (res == NULL ||
PQresultStatus(res) != PGRES_TUPLES_OK) PQresultStatus(res) != PGRES_TUPLES_OK)
{ {
...@@ -3916,7 +3919,7 @@ findLastBuiltinOid(void) ...@@ -3916,7 +3919,7 @@ findLastBuiltinOid(void)
fprintf(stderr, "There is more than one 'template1' entry in the 'pg_database' table\n"); fprintf(stderr, "There is more than one 'template1' entry in the 'pg_database' table\n");
exit_nicely(g_conn); exit_nicely(g_conn);
} }
last_oid = atoi(PQgetvalue(res, 0, PQfnumber(res, "oid"))); last_oid = atoi(PQgetvalue(res, 0, PQfnumber(res, "datlastsysoid")));
PQclear(res); PQclear(res);
return last_oid; return last_oid;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment