Clarify comment in ATRewriteTable().

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.
This commit is contained in:
Robert Haas 2011-02-04 16:14:54 -05:00
parent b1e65c3216
commit 9e7e1172a5

View 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 * If we change column data types or add/remove OIDs, the operation has to
* tables that use this table's rowtype as a column type. * 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 * (Eventually we'll probably need to check for composite type
* the moment a composite type does not enforce any constraints, so it's * dependencies even when we're just scanning the table without a rewrite,
* not necessary/appropriate to enforce them just during ALTER.) * 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) if (newrel)
find_composite_type_dependencies(oldrel->rd_rel->reltype, find_composite_type_dependencies(oldrel->rd_rel->reltype,