List       *newvals;        /* List of NewColumnValue */
    bool        new_notnull;    /* T if we added new NOT NULL constraints */
    bool        new_changeoids; /* T if we added/dropped the OID column */
-   bool        new_changetypes; /* T if we changed column types */
    Oid         newTableSpace;  /* new tablespace; 0 means no change */
    /* Objects to rebuild after completing ALTER TYPE operations */
    List       *changedConstraintOids;  /* OIDs of constraints to rebuild */
    }
 
    /*
-    * 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.
+    * 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.
     *
     * (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.)
     */
-   if (tab->new_changetypes || tab->new_changeoids)
+   if (newrel)
        find_composite_type_dependencies(oldrel->rd_rel->reltype,
                                         RelationGetRelationName(oldrel),
                                         NULL);
        newval->expr = (Expr *) transform;
 
        tab->newvals = lappend(tab->newvals, newval);
-       tab->new_changetypes = true;
    }
    else if (tab->relkind == RELKIND_FOREIGN_TABLE)
    {
 
  (Joe,Blow) | 01-10-1984
 (1 row)
 
--- the default doesn't need to propagate through to the rowtypes, so this is OK
+-- at the moment this will not work due to ALTER TABLE inadequacy:
 alter table fullname add column suffix text default '';
-alter table fullname drop column suffix;
--- this one, without a default, is OK too
-alter table fullname add column suffix text default null;
--- but this should fail, due to ALTER TABLE inadequacy
-alter table fullname alter column suffix set data type integer using null;
 ERROR:  cannot alter table "fullname" because column "people"."fn" uses its rowtype
+-- but this should work:
+alter table fullname add column suffix text default null;
 select * from people;
      fn      |     bd     
 -------------+------------
 
 
 select * from people;
 
--- the default doesn't need to propagate through to the rowtypes, so this is OK
+-- at the moment this will not work due to ALTER TABLE inadequacy:
 alter table fullname add column suffix text default '';
-alter table fullname drop column suffix;
 
--- this one, without a default, is OK too
+-- but this should work:
 alter table fullname add column suffix text default null;
 
--- but this should fail, due to ALTER TABLE inadequacy
-alter table fullname alter column suffix set data type integer using null;
-
 select * from people;
 
 -- test insertion/updating of subfields