Get rid of the pg_shdepend entry for a TOAST table; it's unnecessary since
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 14 May 2007 20:24:41 +0000 (20:24 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 14 May 2007 20:24:41 +0000 (20:24 +0000)
there's an indirect dependency on the owner via the parent table.  We were
already handling indexes that way, but not toast tables for some reason.
Saves a little catalog space and cuts down the verbosity of checkSharedDependencies
reports.

src/backend/catalog/heap.c
src/backend/commands/tablecmds.c

index 43b493767debd09718ff88dfd5ff7552a5e00478..005ed63475b59d774b60b9c7a510cdb968b4736f 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/catalog/heap.c,v 1.320 2007/05/12 00:54:59 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/catalog/heap.c,v 1.321 2007/05/14 20:24:41 tgl Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -958,10 +958,14 @@ heap_create_with_catalog(const char *relname,
     * namespace is.  Also make a dependency link to its owner.
     *
     * For composite types, these dependencies are tracked for the pg_type
-    * entry, so we needn't record them here.  Also, skip this in bootstrap
-    * mode, since we don't make dependencies while bootstrapping.
+    * entry, so we needn't record them here.  Likewise, TOAST tables don't
+    * need a namespace dependency (they live in a pinned namespace) nor an
+    * owner dependency (they depend indirectly through the parent table).
+    * Also, skip this in bootstrap mode, since we don't make dependencies
+    * while bootstrapping.
     */
    if (relkind != RELKIND_COMPOSITE_TYPE &&
+       relkind != RELKIND_TOASTVALUE &&
        !IsBootstrapProcessingMode())
    {
        ObjectAddress myself,
index ee658056ec59357a61e395536272ef98b1bd49d0..d7ad90d0217fc631561d0069c86c506c14eb3a5d 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.222 2007/05/12 00:54:59 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.223 2007/05/14 20:24:41 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -5478,10 +5478,11 @@ ATExecChangeOwner(Oid relationOid, Oid newOwnerId, bool recursing)
        /*
         * Update owner dependency reference, if any.  A composite type has
         * none, because it's tracked for the pg_type entry instead of here;
-        * indexes don't have their own entries either.
+        * indexes and TOAST tables don't have their own entries either.
         */
        if (tuple_class->relkind != RELKIND_COMPOSITE_TYPE &&
-           tuple_class->relkind != RELKIND_INDEX)
+           tuple_class->relkind != RELKIND_INDEX &&
+           tuple_class->relkind != RELKIND_TOASTVALUE)
            changeDependencyOnOwner(RelationRelationId, relationOid,
                                    newOwnerId);