binary upgrade:
authorBruce Momjian <bruce@momjian.us>
Wed, 6 Jan 2010 05:18:18 +0000 (05:18 +0000)
committerBruce Momjian <bruce@momjian.us>
Wed, 6 Jan 2010 05:18:18 +0000 (05:18 +0000)
Preserve relfilenodes for views and composite types --- even though we
don't store data in, them, they do consume relfilenodes.

Bump catalog version.

src/backend/catalog/heap.c
src/bin/pg_dump/pg_dump.c
src/include/catalog/catversion.h

index 7b1eba463f94e46d1320de5ebb5c22f51965ea75..6f0894b2143bb3eda9f989dee93f673e672871cd 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/catalog/heap.c,v 1.365 2010/01/06 03:03:58 momjian Exp $
+ *   $PostgreSQL: pgsql/src/backend/catalog/heap.c,v 1.366 2010/01/06 05:18:18 momjian Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -945,7 +945,8 @@ heap_create_with_catalog(const char *relname,
                     errmsg("only shared relations can be placed in pg_global tablespace")));
    }
 
-   if ((relkind == RELKIND_RELATION || relkind == RELKIND_SEQUENCE) &&
+   if ((relkind == RELKIND_RELATION || relkind == RELKIND_SEQUENCE ||
+        relkind == RELKIND_VIEW || relkind == RELKIND_COMPOSITE_TYPE) &&
        OidIsValid(binary_upgrade_next_heap_relfilenode))
    {
        relid = binary_upgrade_next_heap_relfilenode;
index cff6832cd56244b174dfc618678dc7bae4c31e9d..6c9cb886b99b39d3b1e8dfa7984d12502f4560b9 100644 (file)
@@ -12,7 +12,7 @@
  * by PostgreSQL
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.565 2010/01/06 03:04:02 momjian Exp $
+ *   $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.566 2010/01/06 05:18:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -7192,6 +7192,7 @@ dumpCompositeType(Archive *fout, TypeInfo *tyinfo)
    int         ntups;
    int         i_attname;
    int         i_atttypdefn;
+   int         i_typrelid;
    int         i;
 
    /* Set proper schema search path so type references list correctly */
@@ -7201,7 +7202,8 @@ dumpCompositeType(Archive *fout, TypeInfo *tyinfo)
    /* We assume here that remoteVersion must be at least 70300 */
 
    appendPQExpBuffer(query, "SELECT a.attname, "
-            "pg_catalog.format_type(a.atttypid, a.atttypmod) AS atttypdefn "
+            "pg_catalog.format_type(a.atttypid, a.atttypmod) AS atttypdefn, "
+                     "typrelid "
                      "FROM pg_catalog.pg_type t, pg_catalog.pg_attribute a "
                      "WHERE t.oid = '%u'::pg_catalog.oid "
                      "AND a.attrelid = t.typrelid "
@@ -7222,9 +7224,15 @@ dumpCompositeType(Archive *fout, TypeInfo *tyinfo)
 
    i_attname = PQfnumber(res, "attname");
    i_atttypdefn = PQfnumber(res, "atttypdefn");
+   i_typrelid = PQfnumber(res, "typrelid");
 
    if (binary_upgrade)
+   {
+       Oid typrelid = atooid(PQgetvalue(res, 0, i_typrelid));
+       
        binary_upgrade_set_type_oids_by_type_oid(q, tyinfo->dobj.catId.oid);
+       binary_upgrade_set_relfilenodes(q, typrelid, false);
+   }
 
    appendPQExpBuffer(q, "CREATE TYPE %s AS (",
                      fmtId(tyinfo->dobj.name));
@@ -10518,6 +10526,9 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo)
        appendPQExpBuffer(delq, "%s;\n",
                          fmtId(tbinfo->dobj.name));
 
+       if (binary_upgrade)
+           binary_upgrade_set_relfilenodes(q, tbinfo->dobj.catId.oid, false);
+
        appendPQExpBuffer(q, "CREATE VIEW %s AS\n    %s\n",
                          fmtId(tbinfo->dobj.name), viewdef);
 
index d44dc3c20589c5f0c2f6ea06d8f6164ce0a9b475..b6505feeefd318a4c8b3b4722e7bf52ffce36351 100644 (file)
@@ -37,7 +37,7 @@
  * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.568 2010/01/06 03:07:24 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.569 2010/01/06 05:18:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -53,6 +53,6 @@
  */
 
 /*                         yyyymmddN */
-#define CATALOG_VERSION_NO 201001052
+#define CATALOG_VERSION_NO 201001061
 
 #endif