19.07.2018, 15:20, "Heikki Linnakangas" <hlinnaka@iki.fi>:

On 19/07/18 13:52, Andrey Borodin wrote:


 19 июля 2018 г., в 1:12, Heikki Linnakangas <hlinnaka@iki.fi>

 Yeah, please, I think this is the way to go.

 Here's v11 divided into proposed steps.

Thanks, one quick question:

                         /* We should not unlock buffer if we are going to jump left */
                         if (needScan)
                                 GistBDItem *ptr = (GistBDItem *) palloc(sizeof(GistBDItem));
                                 ptr->buffer = buffer;
                                 ptr->next = bufferStack;
                                 bufferStack = ptr;

Why? I don't see any need to keep the page locked, when we "jump left".

Because it can split to the left again, given that we release lock.

Best regards, Andrey Borodin.