diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c index 71c9931..41fd13e 100644 *** a/src/backend/catalog/heap.c --- b/src/backend/catalog/heap.c *************** *** 530,536 **** CheckAttributeType(const char *attname, containing_rowtypes = list_delete_first(containing_rowtypes); } ! else if (OidIsValid((att_typelem = get_element_type(atttypid)))) { /* * Must recurse into array types, too, in case they are composite. --- 530,536 ---- containing_rowtypes = list_delete_first(containing_rowtypes); } ! else if (OidIsValid((att_typelem = get_base_element_type(atttypid)))) { /* * Must recurse into array types, too, in case they are composite. diff --git a/src/test/regress/expindex 26e7bfd..f84da45 100644 *** a/src/test/regress/expected/alter_table.out --- b/src/test/regress/expected/alter_table.out *************** *** 1516,1521 **** alter table recur1 add column f2 recur1; -- fails --- 1516,1524 ---- ERROR: composite type recur1 cannot be made a member of itself alter table recur1 add column f2 recur1[]; -- fails ERROR: composite type recur1 cannot be made a member of itself + create domain array_of_recur1 as recur1[]; + alter table recur1 add column f2 array_of_recur1; -- fails + ERROR: composite type recur1 cannot be made a member of itself create temp table recur2 (f1 int, f2 recur1); alter table recur1 add column f2 recur2; -- fails ERROR: composite type recur1 cannot be made a member of itself diff --git a/src/test/regress/sql/alter_table.sqindex 0ed16fb..b5d76ea 100644 *** a/src/test/regress/sql/alter_table.sql --- b/src/test/regress/sql/alter_table.sql *************** *** 1128,1133 **** alter table tab1 alter column b type varchar; -- fails --- 1128,1135 ---- create temp table recur1 (f1 int); alter table recur1 add column f2 recur1; -- fails alter table recur1 add column f2 recur1[]; -- fails + create domain array_of_recur1 as recur1[]; + alter table recur1 add column f2 array_of_recur1; -- fails create temp table recur2 (f1 int, f2 recur1); alter table recur1 add column f2 recur2; -- fails alter table recur1 add column f2 int;