Re: Review: Non-inheritable check constraints

Поиск
Список
Период
Сортировка
От Robert Haas
Тема Re: Review: Non-inheritable check constraints
Дата
Msg-id CA+TgmoZLGjuArgJFv_7kzAswLkxUg+fM3SLx4u9xhtxG056hGA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Review: Non-inheritable check constraints  (Nikhil Sontakke <nikkhils@gmail.com>)
Ответы Re: Review: Non-inheritable check constraints  (Nikhil Sontakke <nikkhils@gmail.com>)
Список pgsql-hackers
On Tue, Dec 20, 2011 at 1:14 AM, Nikhil Sontakke <nikkhils@gmail.com> wrote:
> Agreed. I just tried out the scenarios laid out by you both with and without
> the committed patch and AFAICS, normal inheritance semantics have been
> preserved properly even after the commit.

No, they haven't.  I didn't expect this to break anything when you
have two constraints with different names.  The problem is when you
have two constraints with the same name.

Testing reveals that this is, in fact, broken:

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.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Magnus Hagander
Дата:
Сообщение: Re: Patch to allow users to kill their own queries
Следующее
От: Magnus Hagander
Дата:
Сообщение: sync_seqscans in postgresql.conf