Re: GIN fast insert - Mailing list pgsql-hackers

From Teodor Sigaev
Subject Re: GIN fast insert
Date
Msg-id 49C8FEA9.7090506@sigaev.ru
Whole thread Raw
In response to Re: GIN fast insert  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: GIN fast insert  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
> ginInsertCleanup(); is it accurate?  (If it isn't, I think

Exactly, that is right.

> 
> 
>  * This can be called concurrently by multiple backends, so it must cope.
>  * On first glance it looks completely not concurrent-safe and not crash-safe
>  * either.  The reason it's okay is that multiple insertion of the same entry
>  * is detected and treated as a no-op by gininsert.c.  If we crash after
>  * posting entries to the main index and before removing them from the
>  * pending list, it's okay because when we redo the posting later on, nothing
>  * bad will happen.  Likewise, if two backends simultaneously try to post
>  * a pending entry into the main index, one will succeed and one will do
>  * nothing.  We try to notice when someone else is a little bit ahead of
>  * us in the process, but that's just to avoid wasting cycles.  Only the
>  * action of removing a page from the pending list really needs exclusive
>  * lock.
> 
> 
>             regards, tom lane
> 

-- 
Teodor Sigaev                                   E-mail: teodor@sigaev.ru
  WWW: http://www.sigaev.ru/
 


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: GIN fast insert
Next
From: Ben Ali Rachid
Date:
Subject: Function C and INOUT parameters