From: | Alexander Korotkov <a(dot)korotkov(at)postgrespro(dot)ru> |
---|---|
To: | Shubham Barai <shubhambaraiss(at)gmail(dot)com> |
Cc: | Heikki Linnakangas <hlinnaka(at)iki(dot)fi>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>, Kevin Grittner <kgrittn(at)gmail(dot)com>, Andrew Borodin <amborodin86(at)gmail(dot)com> |
Subject: | Re: GSoC 2017 : Patch for predicate locking in Gist index |
Date: | 2017-09-28 10:59:51 |
Message-ID: | CAPpHfdsGu_s8GyGt3OMDbM4819rF+mg1vyCbX12JEKaFKfoF9g@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi!
On Wed, Jun 21, 2017 at 10:52 AM, Shubham Barai <shubhambaraiss(at)gmail(dot)com>
wrote:
> Hi,
>
> On 21 June 2017 at 13:11, Heikki Linnakangas <hlinnaka(at)iki(dot)fi> wrote:
>
>> 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
>>
>> I know that. This is the old version of the patch. I had sent updated
> patch later. Please have a look at updated patch.
>
I took a look on this patch.
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;
However, page might be exclusively locked before. And in this case
CheckForSerializableConflictIn() would be skipped. That happens very
rarely (someone fixes incomplete split before we did), but nevertheless.
------
Alexander Korotkov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company
From | Date | Subject | |
---|---|---|---|
Next Message | Alexander Korotkov | 2017-09-28 11:22:18 | Re: GSoC 2017: weekly progress reports (week 8) |
Previous Message | Alexander Korotkov | 2017-09-28 10:19:38 | Re: GSoC 2017: weekly progress reports (week 6) |