Prevent altering partitioned table's rowtype, if it's used elsewhere.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 6 Jan 2022 21:46:46 +0000 (16:46 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 6 Jan 2022 21:46:46 +0000 (16:46 -0500)
commit7ead9925ff94cfc9c3237672b7d19d5cc1b27ef5
treede7633dff1b6732f4c5f2cf52ce10caf715ce236
parent328dfbdabd22e321bfe1f0547be71faca99a11e9
Prevent altering partitioned table's rowtype, if it's used elsewhere.

We disallow altering a column datatype within a regular table,
if the table's rowtype is used as a column type elsewhere,
because we lack code to go around and rewrite the other tables.
This restriction should apply to partitioned tables as well, but it
was not checked because ATRewriteTables and ATPrepAlterColumnType
were not on the same page about who should do it for which relkinds.

Per bug #17351 from Alexander Lakhin.  Back-patch to all supported
branches.

Discussion: https://postgr.es/m/17351-6db1870f3f4f612a@postgresql.org
src/backend/commands/tablecmds.c
src/test/regress/expected/alter_table.out
src/test/regress/sql/alter_table.sql