BUG #13779: Inherited check constraint becomes non-inherited when related column is changed
От | jan.dirk.zijlstra@redwood.com |
---|---|
Тема | BUG #13779: Inherited check constraint becomes non-inherited when related column is changed |
Дата | |
Msg-id | 20151119094126.2574.12966@wrigleys.postgresql.org обсуждение исходный текст |
Ответы |
Re: BUG #13779: Inherited check constraint becomes non-inherited when related column is changed
|
Список | pgsql-bugs |
The following bug has been logged on the website: Bug reference: 13779 Logged by: Jan Dirk Zijlstra Email address: jan.dirk.zijlstra@redwood.com PostgreSQL version: 9.4.5 Operating system: Linux Description: create table parenttable (a numeric, b numeric); create table childtable () inherits (parenttable); alter table parenttable add constraint parentconstraint_a check (a > 0); alter table parenttable add constraint parentconstraint_b check (b > 0); \d+ parenttable \d+ childtable select t.relname, c.conname, c.coninhcount, c.conislocal, c.connoinherit from pg_constraint c, pg_class t where c.conname like 'parentconstraint%' and c.conrelid = t.oid; alter table parenttable alter column a set data type real ; \d+ parenttable \d+ childtable select t.relname, c.conname, c.coninhcount, c.conislocal, c.connoinherit from pg_constraint c, pg_class t where c.conname like 'parentconstraint%' and c.conrelid = t.oid; drop table childtable; drop table parenttable; When executing the commands above, you'll notice that you have in the end a child table with a constraint which is not inherited anymore. This gives issues, because - you cannot drop the constraint on the parent table anymore. ( psql:tp.sql:86: ERROR: relation 23724254 has non-inherited constraint "parentconstraint_a" ) - you can drop the constraint on the child table, but than you can again not drop the constraint on the parent anymore. (psql:tp.sql:90: ERROR: constraint "parentconstraint_a" of relation "childtable" does not exist) - you cannot uninherit the child (psql:tp.sql:103: ERROR: relation 23724399 has non-inherited constraint "parentconstraint_a") To come out of this situation, I need to - drop the local constraint on the child table - drop the inheritance from the child table - drop the local constraint on the parent table - restore the inheritance on the child table - create the constraint again on the parent table.
В списке pgsql-bugs по дате отправления: