From: | Dan Ports <drkp(at)csail(dot)mit(dot)edu> |
---|---|
To: | Kevin Grittner <Kevin(dot)Grittner(at)wicourts(dot)gov> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: SSI work for 9.1 |
Date: | 2011-06-09 03:59:43 |
Message-ID: | 20110609035943.GK26076@csail.mit.edu |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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/
Attachment | Content-Type | Size |
---|---|---|
ssi-predlock-snapshot-3.patch | text/x-diff | 15.5 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Greg Smith | 2011-06-09 04:14:53 | Core Extensions relocation |
Previous Message | Kevin Grittner | 2011-06-09 03:40:01 | Re: SSI work for 9.1 |