> rhaas=# create table A(ff1 int); >> CREATE TABLE >> rhaas=# create table B () inherits (A); >> CREATE TABLE >> rhaas=# create table C () inherits (B); >> CREATE TABLE >> rhaas=# alter table only b add constraint chk check (ff1 > 0); >> ALTER TABLE >> rhaas=# alter table a add constraint chk check (ff1 > 0); >> NOTICE: merging constraint "chk" with inherited definition >> ALTER TABLE >> >> At this point, you'll find that a has a constraint, and b has a >> constraint, but *c does not have a constraint*. That's bad, because >> a's constraint wasn't "only" and should therefore have propagated all >> the way down the tree. >> >> > Apologies, I did not check this particular scenario. > > I guess, here, we should not allow merging of the inherited constraint > into an "only" constraint. Because that breaks the semantics for "only" > constraints. If this sounds ok, I can whip up a patch for the same. > > PFA, patch which does just this.
postgres=# alter table a add constraint chk check (ff1 > 0); ERROR: constraint "chk" for relation "b" is an ONLY constraint. Cannot merge Regards, Nikhils
only_constraint_no_merge.patch
Description: Binary data
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers