Re: Reproducible GIST index corruption under concurrent updates

From: Heikki Linnakangas <hlinnaka(at)iki(dot)fi>
To: Duncan Sands <duncan(dot)sands(at)deepbluecap(dot)com>, Andrey Borodin <x4mmm(at)yandex-team(dot)ru>
Cc: pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: Reproducible GIST index corruption under concurrent updates
Date: 2021-01-20 10:04:23
Message-ID: b9cee27d-0ce9-7708-d197-580f62e5dab7@iki.fi
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On 20/01/2021 10:23, Duncan Sands wrote:
>> The comment change was correct, but the condition used &&. Should've been ||.
>> There is another copy of basically the same condition earlier in the function
>> that was changed correctly, but I blundered this one. Oops.
>>
>> The attached patch fixes this. I also added an assertion to the
>> gistplacetopage() function, to check that we never try to insert on a deleted
>> page. This bug could've made that happen too, although in this case the problem
>> was a concurrent split, not a deletion. I'll backpatch and push this tomorrow.
>>
>> Many thanks for the easy reproducer script, Duncan!
>
> No problem Heikki, thanks for the quick fix.

Pushed as commit 6b4d3046f4, and backpatched down to version 12, where
this bug was introduced. It will appear in the next minor release.

- Heikki

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message christian 2021-01-20 12:37:46 Bug Report | Using ts_headline with the <-> operator
Previous Message Duncan Sands 2021-01-20 08:23:14 Re: Reproducible GIST index corruption under concurrent updates