Re: [HACKERS] deadlock with truncate and foreing keys

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: [HACKERS] deadlock with truncate and foreing keys
Дата
Msg-id 2077.1203371884@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: [HACKERS] deadlock with truncate and foreing keys  (Stephan Szabo <sszabo@megazone.bigpanda.com>)
Список pgsql-general
Stephan Szabo <sszabo@megazone.bigpanda.com> writes:
> On Mon, 18 Feb 2008, Tom Lane wrote:
>> but right offhand I see no reason for it to do so --- it doesn't
>> *do* anything with fk_rel except close it again.  Likewise
>> RI_FKey_keyequal_upd_fk doesn't seem to really need to touch the
>> pk_rel.  Is there something I'm missing in that?  Maybe this is
>> a vestige of earlier coding that did need to touch both rels
>> to perform the keysequal check?

> Probably something like that - maybe ri_BuildQueryKeyFull might have
> needed it open.

Yeah, looking back at 8.2 and earlier confirms this --- it used to need
access to the rel in order to interpret the trigger arguments
(specifically, convert column names to numbers).  In the 8.3 rewrite
that got rid of the trigger arguments, I removed the no-longer-needed
Relation arguments to ri_BuildQueryKeyFull, but didn't take the next
step of not opening the relation where it wasn't being used otherwise.

I was thinking there might be some arcane locking reason for transiently
locking the other table, but I can't imagine what it would be.  We have
a writer's lock on the table we are modifying, and that is sufficient to
ensure that the RI constraint isn't changing, so ...

> Actually, I'm wondering if the ri_BuildQueryKeyFull call
> is also unnecessary now - I don't think we ever use the qkey that comes
> out of it unless I'm missing some code.

Good point --- ri_KeysEqual only needs the RI_ConstraintInfo not the
qkey.  In 8.2 and before it used the qkey to get the info.

In short, this is easy to improve in HEAD and 8.3, but not so readily
fixable in prior releases.  I'll go make it so.

            regards, tom lane

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

Предыдущее
От: Stephan Szabo
Дата:
Сообщение: Re: [HACKERS] deadlock with truncate and foreing keys
Следующее
От: Alvaro Herrera
Дата:
Сообщение: Re: SPI-functions and transaction control