pg_upgrade: preserve freeze info for postgres/template1 dbs
authorBruce Momjian
Thu, 12 Feb 2015 02:02:07 +0000 (21:02 -0500)
committerBruce Momjian
Thu, 12 Feb 2015 02:02:28 +0000 (21:02 -0500)
pg_database.datfrozenxid and pg_database.datminmxid were not preserved
for the 'postgres' and 'template1' databases.  This could cause missing
clog file errors on access to user tables and indexes after upgrades in
these databases.

Backpatch through 9.0

src/bin/pg_dump/pg_dumpall.c

index c12cb0af2d14072e674df313eb606a6b9db85dde..e988958e1b73d50172d7df7f7be5523f01a681a9 100644 (file)
@@ -1382,17 +1382,17 @@ dumpCreateDB(PGconn *conn)
                appendStringLiteralConn(buf, dbname, conn);
                appendPQExpBuffer(buf, ";\n");
            }
+       }
 
-           if (binary_upgrade)
-           {
-               appendPQExpBuffer(buf, "-- For binary upgrade, set datfrozenxid and datminmxid.\n");
-               appendPQExpBuffer(buf, "UPDATE pg_catalog.pg_database "
-                                 "SET datfrozenxid = '%u', datminmxid = '%u' "
-                                 "WHERE datname = ",
-                                 dbfrozenxid, dbminmxid);
-               appendStringLiteralConn(buf, dbname, conn);
-               appendPQExpBuffer(buf, ";\n");
-           }
+       if (binary_upgrade)
+       {
+           appendPQExpBuffer(buf, "-- For binary upgrade, set datfrozenxid and datminmxid.\n");
+           appendPQExpBuffer(buf, "UPDATE pg_catalog.pg_database "
+                             "SET datfrozenxid = '%u', datminmxid = '%u' "
+                             "WHERE datname = ",
+                             dbfrozenxid, dbminmxid);
+           appendStringLiteralConn(buf, dbname, conn);
+           appendPQExpBuffer(buf, ";\n");
        }
 
        if (!skip_acls &&