Joseph Koshakow <kosh...@gmail.com> writes: > There's a rare edge case in `alter table` that can prevent users from > dropping a column as shown below
> # create table atacc1(a int, "........pg.dropped.1........" int); > CREATE TABLE > # alter table atacc1 drop column a; > ERROR: duplicate key value violates unique constraint > "pg_attribute_relid_attnam_index" > DETAIL: Key (attrelid, attname)=(16407, ........pg.dropped.1........) > already exists. I think we intentionally did not bother with preventing this, on the grounds that if you were silly enough to name a column that way then you deserve any ensuing problems. If we were going to expend any code on the scenario, I'd prefer to make it be checks in column addition/renaming that disallow naming a column this way. What you propose here doesn't remove the fundamental tension about whether this is valid user namespace or not, it just makes things less predictable. regards, tom lane