From: | jan(dot)dirk(dot)zijlstra(at)redwood(dot)com |
---|---|
To: | pgsql-bugs(at)postgresql(dot)org |
Subject: | BUG #13779: Inherited check constraint becomes non-inherited when related column is changed |
Date: | 2015-11-19 09:41:26 |
Message-ID: | 20151119094126.2574.12966@wrigleys.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs pgsql-hackers |
The following bug has been logged on the website:
Bug reference: 13779
Logged by: Jan Dirk Zijlstra
Email address: jan(dot)dirk(dot)zijlstra(at)redwood(dot)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.
From | Date | Subject | |
---|---|---|---|
Next Message | Kouadio denis KOFFI | 2015-11-19 16:27:19 | Fwd: request |
Previous Message | Sandeep Thakkar | 2015-11-19 07:01:46 | Re: BUG #13692: Error when run silent installation whith alredy installed PG9.4 |
From | Date | Subject | |
---|---|---|---|
Next Message | Amit Langote | 2015-11-19 10:04:30 | Typo in file header comment of replorigindesc.c |
Previous Message | Michael Paquier | 2015-11-19 09:13:29 | Re: Selective logical replication |