Re: GSoC 2017 : Patch for predicate locking in Gist index
Andrey Borodin <amborodin86@gmail.com>
From: Andrew Borodin <amborodin86@gmail.com>
To: Alexander Korotkov <a.korotkov@postgrespro.ru>
Cc: Shubham Barai <shubhambaraiss@gmail.com>,
Heikki Linnakangas <hlinnaka@iki.fi>, pgsql-hackers <pgsql-hackers@postgresql.org>,
Kevin Grittner <kgrittn@gmail.com>
Date: 2017-10-02T10:40:29Z
Lists: pgsql-hackers
Hi, Alexander!
Thanks for looking into the patch!
On Thu, Sep 28, 2017 at 3:59 PM, Alexander Korotkov <
a.korotkov@postgrespro.ru> wrote:
>
>
> 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.
>
if xlocked = true, page was already checked for conflict after setting
exclusive lock on it's buffer. I still do not see any problem here...
Best regards, Andrey Borodin.
Commits
-
Add predicate locking for GiST
- 3ad55863e939 11.0 landed