Re: LOCK ROW SHARE MODE

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: LOCK ROW SHARE MODE
Дата
Msg-id 16989.1003898057@sss.pgh.pa.us
обсуждение исходный текст
Ответ на LOCK ROW SHARE MODE  ("Christopher Kings-Lynne" <chriskl@familyhealth.com.au>)
Список pgsql-hackers
"Christopher Kings-Lynne" <chriskl@familyhealth.com.au> writes:
> In the LOCK TABLE docs it documents the SELECT...FOR UPDATE as follows:

> ROW SHARE MODE
> Note: Automatically acquired by SELECT...FOR UPDATE. While it is a shared
> lock, may be upgraded later to a ROW EXCLUSIVE lock.
> Conflicts with EXCLUSIVE and ACCESS EXCLUSIVE lock modes.

> However, if I begin a transaction in one window and SELECT...FOR UPDATE a
> row, then begin a transaction in another window and SELECT ... FOR UPDATE
> the same row, the second SELECT..FOR UPDATE blocks until the first
> transactions is committed or rolled back.

> So, shouldn't this mean that the ROW SHARE mode should in fact be documented
> to conflict with itself???  And with this behaviour is it really a shared
> lock?  I don't get it!

ROW SHARE is a table-level lock mode.  SELECT FOR UPDATE grabs ROW SHARE
lock on the table, *plus* an exclusive-write lock on the selected row(s).
The latter is what's conflicting for you.

I think the code is okay, but the documentation could use some work...
        regards, tom lane


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

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: CREATE OR REPLACE VIEW/TRIGGER
Следующее
От: Joe Conway
Дата:
Сообщение: Re: storing binary data