Re: Partitioning option for COPY

Emmanuel Cecchet <manu@asterdata.com>

From: Emmanuel Cecchet <manu@asterdata.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Emmanuel Cecchet <Emmanuel.Cecchet@asterdata.com>, Jan Urbański <wulczer@wulczer.org>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2009-11-17T16:19:35Z
Lists: pgsql-hackers
Tom Lane wrote:
> Emmanuel Cecchet <manu@asterdata.com> writes:
>   
>> Actually the list is supposed to stay around between statement 
>> executions. You don't want to restart with a cold cache at every 
>> statement so I really want this structure to stay in memory at a more 
>> global level.
>>     
>
> Cache?  Why do you need a cache for COPY?  Repeated bulk loads into the
> same table within a single session doesn't seem to me to be a case that
> is common enough to justify a cache.
>   
Actually the cache is only activated if you use the partitioning option. 
It is just a list of oids of child tables where tuples were inserted.
It is common to have multiple COPY operations in the same session when 
you are doing bulk loading in a warehouse.
> (BTW, the quoted code seems to be busily reinventing OID Lists.  Don't
> do that.)
>   
Yes, I understood that I should use an OidList instead. But I was trying 
to understand what I did wrong here (besides reinventing the oid list ;-)).
Why do I get this segfault if I use memory from CacheMemoryContext?

Emmanuel

-- 
Emmanuel Cecchet
Aster Data
Web: http://www.asterdata.com