Clarify comment in ATRewriteTable().
authorRobert Haas <[email protected]>
Fri, 4 Feb 2011 21:14:54 +0000 (16:14 -0500)
committerRobert Haas <[email protected]>
Fri, 4 Feb 2011 21:14:54 +0000 (16:14 -0500)
Make sure it's clear that the prohibition on adding a column with a default
when the rowtype is used elsewhere is intentional, and be a bit more
explicit about the other cases where we perform this check.

src/backend/commands/tablecmds.c

index 1ecba0278555087a878acdbe4af1ed4088f65a77..7a028991213a1ab9e0d0fd9adf88a509c8d432c0 100644 (file)
@@ -3378,12 +3378,16 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap, LOCKMODE lockmode)
    }
 
    /*
-    * If we need to rewrite the table, the operation has to be propagated to
-    * tables that use this table's rowtype as a column type.
+    * If we change column data types or add/remove OIDs, the operation has to
+    * be propagated to tables that use this table's rowtype as a column type.
+    * newrel will also be non-NULL in the case where we're adding a column
+    * with a default.  We choose to forbid that case as well, since composite
+    * types might eventually support defaults.
     *
-    * (Eventually this will probably become true for scans as well, but at
-    * the moment a composite type does not enforce any constraints, so it's
-    * not necessary/appropriate to enforce them just during ALTER.)
+    * (Eventually we'll probably need to check for composite type
+    * dependencies even when we're just scanning the table without a rewrite,
+    * but at the moment a composite type does not enforce any constraints,
+    * so it's not necessary/appropriate to enforce them just during ALTER.)
     */
    if (newrel)
        find_composite_type_dependencies(oldrel->rd_rel->reltype,