Re: [HACKERS] GSoC 2017 : Patch for predicate locking in Gist index
От | Alexander Korotkov |
---|---|
Тема | Re: [HACKERS] GSoC 2017 : Patch for predicate locking in Gist index |
Дата | |
Msg-id | CAPpHfdsGu_s8GyGt3OMDbM4819rF+mg1vyCbX12JEKaFKfoF9g@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [HACKERS] GSoC 2017 : Patch for predicate locking in Gist index (Shubham Barai <shubhambaraiss@gmail.com>) |
Ответы |
Re: [HACKERS] GSoC 2017 : Patch for predicate locking in Gist index
Re: [HACKERS] GSoC 2017 : Patch for predicate locking in Gist index |
Список | pgsql-hackers |
Hi!
On Wed, Jun 21, 2017 at 10:52 AM, Shubham Barai <shubhambaraiss@gmail.com> wrote:
I took a look on this patch.
Hi,
On 21 June 2017 at 13:11, Heikki Linnakangas <hlinnaka@iki.fi> wrote:I know that. This is the old version of the patch. I had sent updated patch later. Please have a look at updated patch.On 06/16/2017 01:24 PM, Shubham Barai wrote:@@ -497,6 +499,13 @@ gistplacetopage(Relation rel, Size freespace, GISTSTATE *giststate,
for (ptr = dist->next; ptr; ptr = ptr->next)
UnlockReleaseBuffer(ptr->buffer);
}
+
+ for (ptr = dist; ptr; ptr = ptr->next)
+ PredicateLockPageSplit(rel,
+ BufferGetBlockNumber(buffer),
+ BufferGetBlockNumber(ptr->buffer));
+
+
I think this new code needs to go before the UnlockReleaseBuffer() calls above. Calling BufferGetBlockNumber() on an already-released buffer is not cool.
- Heikki
In gistdoinsert() you do CheckForSerializableConflictIn() only if page wasn't exclusively locked before (xlocked is false).
if (!xlocked)
{
LockBuffer(stack->buffer, GIST_UNLOCK);
LockBuffer(stack->buffer, GIST_EXCLUSIVE);
CheckForSerializableConflictIn(r, NULL, stack->buffer);
xlocked = true;
The Russian Postgres Company
В списке pgsql-hackers по дате отправления: