diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 90be92ff0fbf51b37ebeab2b18062cece3208ea0..52e2ee5b7c1692b398e6420f1c1666048eb922ce 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/commands/tablecmds.c,v 1.47 2002/10/19 02:25:51 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/commands/tablecmds.c,v 1.48 2002/10/19 03:01:09 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1643,53 +1643,22 @@ AlterTableAddColumn(Oid myrelid,
 		colDefChild->inhcount = 1;
 		colDefChild->is_local = false;
 
-		/* we only need direct inheritors */
-		children = find_inheritance_children(myrelid);
+		/* this routine is actually in the planner */
+		children = find_all_inheritors(myrelid);
 
 		/*
-		 * If the child has a column with same name and type,
-		 * increment its attinhcount and continue.  If it has
-		 * different type, abort.  If it doesn't have a column
-		 * with the same name, add it.
+		 * find_all_inheritors does the recursive search of the
+		 * inheritance hierarchy, so all we have to do is process all of
+		 * the relids in the list that it returns.
 		 */
 		foreach(child, children)
 		{
 			Oid			childrelid = lfirsti(child);
-			HeapTuple	tuple;
-			Form_pg_attribute childatt;
 
 			if (childrelid == myrelid)
 				continue;
 
-			attrdesc = heap_openr(AttributeRelationName, RowExclusiveLock);
-			tuple = SearchSysCacheCopyAttName(childrelid, colDef->colname);
-			if (!HeapTupleIsValid(tuple))
-			{
-				heap_close(attrdesc, RowExclusiveLock);
-				AlterTableAddColumn(childrelid, false, true, colDefChild);
-				continue;
-			}
-			childatt = (Form_pg_attribute) GETSTRUCT(tuple);
-
-			typeTuple = typenameType(colDef->typename);
-			tform = (Form_pg_type) GETSTRUCT(typeTuple);
-
-			if (HeapTupleGetOid(typeTuple) != childatt->atttypid ||
-					colDef->typename->typmod != childatt->atttypmod)
-				elog(ERROR, "ALTER TABLE: child table %u has different "
-						"type for column \"%s\"",
-						childrelid, colDef->colname);
-
-			childatt->attinhcount++;
-			simple_heap_update(attrdesc, &tuple->t_self, tuple);
-			CatalogUpdateIndexes(attrdesc, tuple);
-			
-			elog(NOTICE, "ALTER TABLE: merging definition of column "
-					"\"%s\" for child %u", colDef->colname, childrelid);
-
-			heap_close(attrdesc, RowExclusiveLock);
-			heap_freetuple(tuple);
-			ReleaseSysCache(typeTuple);
+			AlterTableAddColumn(childrelid, false, true, colDefChild);
 		}
 	}
 	else