On Fri, Jun 7, 2013 at 11:36 PM, Andres Freund <andres@2ndquadrant.com> wrote:
> On 2013-06-07 23:28:56 +0900, Amit Langote wrote:
>> On Fri, Jun 7, 2013 at 11:15 PM, Robert Haas <robertmhaas@gmail.com> wrote:
>> > On Wed, Jun 5, 2013 at 10:06 PM, Amit Langote <amitlangote09@gmail.com> wrote:
>> >> At what point do the entries in the pending list are moved to the main
>> >> GIN data structure?
>> >> From documentation, I read that overflowing work_mem and vacuum are
>> >> two such causes; what about when the concerned backend is to exit and
>> >> autovacuum has not yet kicked in?
>> >
>> > I don't think there's any special handling for that case, nor do I
>> > think any is needed.
>> >
>>
>> Okay, aside from that case, what else would move those to the main
>> structure? They (the entries in the unsorted pending list) are in the
>> local memory (work_mem?) of the backend, right?
>
> No, it's in the normal heap, pointed to by the metapage. Storing it in
> local memory would mean we would have to flush it out before commit.
>
> That part of gin is actually quite readable code, so I suggest looking
> there. Start with ginfast.c:ginHeapTupleFastInsert().
>
Thanks.
--
Amit Langote