Обсуждение: funny lock mode in DropTrigger

Поиск
Список
Период
Сортировка

funny lock mode in DropTrigger

От
Alvaro Herrera
Дата:
I just noticed that DropTrigger uses ShareRowExclusiveLock to lock the
relation it's going to drop the trigger on.  The comment right above it
says that this should match RemoveTriggerById, but that one uses
AccessExclusiveLock -- so one of them (or the comment) is not right.

Besides, the docs state that no backend code uses ShareRowExclusiveLock
anyway (13.3 Explicit locking).  I guess that if the patch to reduce
lock strength in alter table goes in again, it'll need to update this
chapter to match.

-- 
Álvaro Herrera <alvherre@alvh.no-ip.org>


Re: funny lock mode in DropTrigger

От
Tom Lane
Дата:
Alvaro Herrera <alvherre@alvh.no-ip.org> writes:
> I just noticed that DropTrigger uses ShareRowExclusiveLock to lock the
> relation it's going to drop the trigger on.  The comment right above it
> says that this should match RemoveTriggerById, but that one uses
> AccessExclusiveLock -- so one of them (or the comment) is not right.

Yeah, this is a bug.  I think what happened is:

1. Simon committed his patch to reduce lock levels.
2. Robert copied that lock level in his commit  4240e429d0c2d889d0cda23c618f94e12c13ade7 that refactored use  of
RangeVarGetRelid.
3. When I reverted most of Simon's change, it didn't occur to me to  look for places that had copied the bad lock
levels--- I was  just looking at what his patch had done.
 

I will fix this, and also do some looking to see if the bogus lock
levels propagated anywhere else...
        regards, tom lane