Re: BUG #4244: ALTER TABLE ... NO INHERIT problem

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: BUG #4244: ALTER TABLE ... NO INHERIT problem
Дата
Msg-id 19666.1213709303@sss.pgh.pa.us
обсуждение исходный текст
Ответ на BUG #4244: ALTER TABLE ... NO INHERIT problem  ("Tatsuhito Kasahara" <kasahara.tatsuhito@oss.ntt.co.jp>)
Список pgsql-bugs
"Tatsuhito Kasahara" <kasahara.tatsuhito@oss.ntt.co.jp> writes:
> The comment in tablecmds.c says "AccessShareLock is probably enough".
> But it actually needs more strong lock mode ?

> ATExecDropInherit(Relation rel, RangeVar *parent)
>     /*
>      * AccessShareLock on the parent is probably enough, seeing that DROP
>      * TABLE doesn't lock parent tables at all.  We need some lock since we'll
>      * be inspecting the parent's schema.
>      */
>     parent_rel = heap_openrv(parent, AccessShareLock);

Well, as the comment points out, things are just as bad if you do
"DROP TABLE c1_tbl" instead of ALTER NO INHERIT.

I'm not sure there is a lot we can do about this.  Taking a lock
on the parent table that is strong enough to block a SELECT would
just convert the problem into a deadlock (since a SELECT on the
parent will lock parent before child).  Hardly seems like an
improvement.

            regards, tom lane

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

Предыдущее
От: "Tatsuhito Kasahara"
Дата:
Сообщение: BUG #4244: ALTER TABLE ... NO INHERIT problem
Следующее
От: Andrew Sullivan
Дата:
Сообщение: Re: BUG #4243: Idle in transaction