]> granicus.if.org Git - postgresql/commitdiff
Use new datlastsysoid field in pg_database + some cleanups & fixes
authorPhilip Warner <pjw@rhyme.com.au>
Sun, 22 Oct 2000 18:13:09 +0000 (18:13 +0000)
committerPhilip Warner <pjw@rhyme.com.au>
Sun, 22 Oct 2000 18:13:09 +0000 (18:13 +0000)
src/bin/pg_dump/pg_backup_archiver.c
src/bin/pg_dump/pg_backup_archiver.h
src/bin/pg_dump/pg_dump.c

index 6d2309df3130ee33ee59fba87cf22eb664b26019..b6487d342596cd041088c91b0637cf0d8172158b 100644 (file)
@@ -220,6 +220,7 @@ void RestoreArchive(Archive* AHX, RestoreOptions *ropt)
                                 */
                                if (!AH->CustomOutPtr)
                                        fprintf(stderr, "%s: WARNING - skipping BLOB restoration\n", progname);
+
                        } else {
 
                                _disableTriggers(AH, te, ropt);
@@ -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);
                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;
        }
     else if (AH->gzOut)
index 275f9eba2e99fff423932081633e2fbb17c02c43..e82cae170f516bc5f90f3a72b282db3a9b65702e 100644 (file)
@@ -62,7 +62,7 @@ typedef z_stream *z_streamp;
 
 #define K_VERS_MAJOR 1
 #define K_VERS_MINOR 4 
-#define K_VERS_REV 17 
+#define K_VERS_REV 19 
 
 /* Data block types */
 #define BLK_DATA 1
index 3e4ba6c72a3d4123ab129e92bceb066624b4322a..4ccae1ec9541864f5a72f265e856f2da009a1e19 100644 (file)
@@ -22,7 +22,7 @@
  *
  *
  * 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
  *
@@ -140,7 +140,7 @@ static char *checkForQuote(const char *s);
 static void clearTableInfo(TableInfo *, int);
 static void dumpOneFunc(Archive *fout, FuncInfo *finfo, int i,
                        TypeInfo *tinfo, int numTypes);
-static int     findLastBuiltinOid(void);
+static int     findLastBuiltinOid(const char*);
 static void setMaxOid(Archive *fout);
 
 static void AddAcl(char *aclbuf, const char *keyword);
@@ -954,7 +954,7 @@ main(int argc, char **argv)
                PQclear(res);
        }
 
-       g_last_builtin_oid = findLastBuiltinOid();
+       g_last_builtin_oid = findLastBuiltinOid(dbname);
 
        /* Dump the database definition */
        if (!dataOnly)
@@ -3888,14 +3888,17 @@ setMaxOid(Archive *fout)
 */
 
 static int
-findLastBuiltinOid(void)
+findLastBuiltinOid(const char* dbname)
 {
        PGresult   *res;
        int                     ntups;
        int                     last_oid;
+       PQExpBuffer query = createPQExpBuffer();
+
+       resetPQExpBuffer(query);
+       appendPQExpBuffer(query, "SELECT datlastsysoid from pg_database where datname = '%s'", dbname);
 
-       res = PQexec(g_conn,
-                         "SELECT oid from pg_database where datname = 'template1'");
+       res = PQexec(g_conn, query->data);
        if (res == NULL ||
                PQresultStatus(res) != PGRES_TUPLES_OK)
        {
@@ -3916,7 +3919,7 @@ findLastBuiltinOid(void)
                fprintf(stderr, "There is more than one 'template1' entry in the 'pg_database' table\n");
                exit_nicely(g_conn);
        }
-       last_oid = atoi(PQgetvalue(res, 0, PQfnumber(res, "oid")));
+       last_oid = atoi(PQgetvalue(res, 0, PQfnumber(res, "datlastsysoid")));
        PQclear(res);
        return last_oid;
 }