From 28f6cab61ab8958b1a7dfb019724687d92722538 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Wed, 6 Jan 2010 05:18:18 +0000 Subject: [PATCH] binary upgrade: 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 | 5 +++-- src/bin/pg_dump/pg_dump.c | 15 +++++++++++++-- src/include/catalog/catversion.h | 4 ++-- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c index 7b1eba463f..6f0894b214 100644 --- a/src/backend/catalog/heap.c +++ b/src/backend/catalog/heap.c @@ -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; diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index cff6832cd5..6c9cb886b9 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -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); diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h index d44dc3c205..b6505feeef 100644 --- a/src/include/catalog/catversion.h +++ b/src/include/catalog/catversion.h @@ -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 -- 2.40.0