Re: Review: Non-inheritable check constraints
| От | Nikhil Sontakke |
|---|---|
| Тема | Re: Review: Non-inheritable check constraints |
| Дата | |
| Msg-id | CANgU5Zfu6BKcrvBUhqNyjCA_fFt51L4gDbm6bRysORsghqGn4Q@mail.gmail.com обсуждение исходный текст |
| Ответ на | Re: Review: Non-inheritable check constraints (Nikhil Sontakke <nikkhils@gmail.com>) |
| Ответы |
Re: Review: Non-inheritable check constraints
|
| Список | pgsql-hackers |
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
Вложения
В списке pgsql-hackers по дате отправления: