]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Reject attempts to alter composite types used in indexes.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 27 Mar 2023 19:04:02 +0000 (15:04 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 27 Mar 2023 19:04:02 +0000 (15:04 -0400)
commitd90d59e2503879cc2742a3a0eee01d2af2cca02d
treebc7947e8be0d095f9bfe0dbcffc5d0250603bbeb
parent7c4873438fd4c89da40beb943a373c61ae509e93
Reject attempts to alter composite types used in indexes.

find_composite_type_dependencies() ignored indexes, which is a poor
decision because an expression index could have a stored column of
a composite (or other container) type even when the underlying table
does not.  Teach it to detect such cases and error out.  We have to
work a bit harder than for other relations because the pg_depend entry
won't identify the specific index column of concern, but it's not much
new code.

This does not address bug #17872's original complaint that dropping
a column in such a type might lead to violations of the uniqueness
property that a unique index is supposed to ensure.  That seems of
much less concern to me because it won't lead to crashes.

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

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