Re: SSI work for 9.1
От | Dan Ports |
---|---|
Тема | Re: SSI work for 9.1 |
Дата | |
Msg-id | 20110609035943.GK26076@csail.mit.edu обсуждение исходный текст |
Ответ на | Re: SSI work for 9.1 ("Kevin Grittner" <Kevin.Grittner@wicourts.gov>) |
Список | pgsql-hackers |
On Wed, Jun 08, 2011 at 09:17:04PM -0500, Kevin Grittner wrote: > A patch is attached which just covers the predicate lock acquisition, > where a snapshot is available without too much pain. There are two > functions which acquire predicate locks where a snapshot was not > readily available: _bt_search() and _bt_get_endpoint(). Not only was > it not clear how to get a snapshot in, it was not entirely clear from > reading the code that we need to acquire predicate locks here. Now, > I suspect that we probably do, because I spent many long hours > stepping through gdb to pick the spots where they are, but that was > about a year ago and my memory of the details has faded. For _bt_search(), the lock calls should move to _bt_first() where the ScanDesc is available. This also keeps us from trying to take locks during _bt_pagedel(), which is only called during vacuum and recovery. The call in _bt_get_endpoint() seems unnecessary, because after it returns, _bt_endpoint() takes the same lock. The only other callers of _bt_get_endpoint() are _bt_pagedel() and _bt_insert_parent(), neither of which should take predicate locks. I've updated the patch, attached. Dan -- Dan R. K. Ports MIT CSAIL http://drkp.net/
Вложения
В списке pgsql-hackers по дате отправления: