Reject attempts to alter composite types used in indexes.
Tom Lane <tgl@sss.pgh.pa.us>
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
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/commands/tablecmds.c | modified | +48 −8 |
| src/test/regress/expected/alter_table.out | modified | +9 −1 |
| src/test/regress/sql/alter_table.sql | modified | +10 −1 |
Discussion
- BUG #17872: Dropping an attribute of a composite type breaks indexes over the type silently 9 messages · 2023-03-27 → 2023-03-28