SSI heap_insert and page-level predicate locks

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема SSI heap_insert and page-level predicate locks
Дата
Msg-id 4DEF3194.6030305@enterprisedb.com
обсуждение исходный текст
Ответы Re: SSI heap_insert and page-level predicate locks
Re: SSI heap_insert and page-level predicate locks
Список pgsql-hackers
heap_insert() calls CheckForSerializableConflictIn(), which checks if 
there is a predicate lock on the whole relation, or on the page we're 
inserting to. It does not check for tuple-level locks, because there 
can't be any locks on a tuple that didn't exist before.

AFAICS, the check for page lock is actually unnecessary. A page-level 
lock on a heap only occurs when tuple-level locks are promoted. It is 
just a coarser-grain representation of holding locks on all tuples on 
the page, *that exist already*. It is not a "gap" lock like the index 
locks are, it doesn't need to conflict with inserting new tuples on the 
page. In fact, if heap_insert chose to insert the tuple on some other 
heap page, there would have been no conflict.

--   Heikki Linnakangas  EnterpriseDB   http://www.enterprisedb.com


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

Предыдущее
От: Florian Pflug
Дата:
Сообщение: Re: [PATCH] Bug in XPATH() if expression returns a scalar value
Следующее
От: Dan Ports
Дата:
Сообщение: Re: reindex creates predicate lock on index root