diff --git a/doc/src/sgml/ref/alter_type.sgml b/doc/src/sgml/ref/alter_type.sgml index e889ffb..4bdf99f 100644 *** a/doc/src/sgml/ref/alter_type.sgml --- b/doc/src/sgml/ref/alter_type.sgml *************** *** 122,128 **** ALTER TYPE name ADD VALUE Automatically propagate the operation to typed tables of the ! type being altered. --- 122,128 ---- Automatically propagate the operation to typed tables of the ! type being altered and any descendants thereof. diff --git a/src/backend/commands/tableindex 1f709a4..9bab341 100644 *** a/src/backend/commands/tablecmds.c --- b/src/backend/commands/tablecmds.c *************** *** 3858,3864 **** ATSimpleRecursion(List **wqueue, Relation rel, * ATTypedTableRecursion * * Propagate ALTER TYPE operations to the typed tables of that type. ! * Also check the RESTRICT/CASCADE behavior. */ static void ATTypedTableRecursion(List **wqueue, Relation rel, AlterTableCmd *cmd, --- 3858,3865 ---- * ATTypedTableRecursion * * Propagate ALTER TYPE operations to the typed tables of that type. ! * Also check the RESTRICT/CASCADE behavior. Given CASCADE, also permit ! * recursion to inheritance children of the typed tables. */ static void ATTypedTableRecursion(List **wqueue, Relation rel, AlterTableCmd *cmd, *************** *** 3880,3886 **** ATTypedTableRecursion(List **wqueue, Relation rel, AlterTableCmd *cmd, childrel = relation_open(childrelid, lockmode); CheckTableNotInUse(childrel, "ALTER TABLE"); ! ATPrepCmd(wqueue, childrel, cmd, false, true, lockmode); relation_close(childrel, NoLock); } } --- 3881,3887 ---- childrel = relation_open(childrelid, lockmode); CheckTableNotInUse(childrel, "ALTER TABLE"); ! ATPrepCmd(wqueue, childrel, cmd, true, true, lockmode); relation_close(childrel, NoLock); } } diff --git a/src/test/regress/expected/index 5b1223b..6db648d 100644 *** a/src/test/regress/expected/alter_table.out --- b/src/test/regress/expected/alter_table.out *************** *** 1845,1850 **** ALTER TYPE test_type1 ALTER ATTRIBUTE b TYPE varchar; -- fails --- 1845,1851 ---- ERROR: cannot alter type "test_type1" because column "test_tbl1"."y" uses it CREATE TYPE test_type2 AS (a int, b text); CREATE TABLE test_tbl2 OF test_type2; + CREATE TABLE test_tbl2_subclass () INHERITS (test_tbl2); \d test_type2 Composite type "public.test_type2" Column | Type | Modifiers *************** *** 1858,1863 **** Composite type "public.test_type2" --- 1859,1865 ---- --------+---------+----------- a | integer | b | text | + Number of child tables: 1 (Use \d+ to list them.) Typed table of type: test_type2 ALTER TYPE test_type2 ADD ATTRIBUTE c text; -- fails *************** *** 1879,1884 **** Composite type "public.test_type2" --- 1881,1887 ---- a | integer | b | text | c | text | + Number of child tables: 1 (Use \d+ to list them.) Typed table of type: test_type2 ALTER TYPE test_type2 ALTER ATTRIBUTE b TYPE varchar; -- fails *************** *** 1900,1905 **** ALTER TYPE test_type2 ALTER ATTRIBUTE b TYPE varchar CASCADE; --- 1903,1909 ---- a | integer | b | character varying | c | text | + Number of child tables: 1 (Use \d+ to list them.) Typed table of type: test_type2 ALTER TYPE test_type2 DROP ATTRIBUTE b; -- fails *************** *** 1919,1924 **** Composite type "public.test_type2" --- 1923,1929 ---- --------+---------+----------- a | integer | c | text | + Number of child tables: 1 (Use \d+ to list them.) Typed table of type: test_type2 ALTER TYPE test_type2 RENAME ATTRIBUTE a TO aa; -- fails *************** *** 1938,1944 **** Composite type "public.test_type2" --- 1943,1958 ---- --------+---------+----------- aa | integer | c | text | + Number of child tables: 1 (Use \d+ to list them.) Typed table of type: test_type2 + \d test_tbl2_subclass + Table "public.test_tbl2_subclass" + Column | Type | Modifiers + --------+---------+----------- + aa | integer | + c | text | + Inherits: test_tbl2 + CREATE TYPE test_type_empty AS (); DROP TYPE test_type_empty; diff --git a/src/test/regress/sql/alter_table.sqindex 43a9ce9..7566f30 100644 *** a/src/test/regress/sql/alter_table.sql --- b/src/test/regress/sql/alter_table.sql *************** *** 1344,1349 **** ALTER TYPE test_type1 ALTER ATTRIBUTE b TYPE varchar; -- fails --- 1344,1350 ---- CREATE TYPE test_type2 AS (a int, b text); CREATE TABLE test_tbl2 OF test_type2; + CREATE TABLE test_tbl2_subclass () INHERITS (test_tbl2); \d test_type2 \d test_tbl2 *************** *** 1366,1371 **** ALTER TYPE test_type2 RENAME ATTRIBUTE a TO aa; -- fails --- 1367,1373 ---- ALTER TYPE test_type2 RENAME ATTRIBUTE a TO aa CASCADE; \d test_type2 \d test_tbl2 + \d test_tbl2_subclass CREATE TYPE test_type_empty AS (); DROP TYPE test_type_empty;