On Thu, 2009-10-08 at 12:21 -0400, Tom Lane wrote:
> Robert Haas <robertmh...@gmail.com> writes:
> > On Thu, Oct 8, 2009 at 11:50 AM, Tom Lane <t...@sss.pgh.pa.us> wrote:
> >> I wonder whether we could break down COPY into sub-sub
> >> transactions to work around that...
> 
> > How would that work?  Don't you still need to increment the command counter?
> 
> Actually, command counter doesn't help because incrementing the CC
> doesn't give you a rollback boundary between rows inserted before it
> and afterwards.  What I was vaguely imaging was
> 
>       -- outer transaction for whole COPY
> 
>       -- sub-transactions that are children of outer transaction
> 
>       -- sub-sub-transactions that are children of sub-transactions
> 
> You'd eat a sub-sub-transaction per row, and start a new sub-transaction
> every 2^32 rows.
> 
> However, on second thought this really doesn't get us anywhere, it just
> moves the 2^32 restriction somewhere else.  Once the outer transaction
> gets to be more than 2^31 XIDs old, the database is going to stop
> because of XID wraparound.
> 
> So really we have to find some way to only expend one XID per failure,
> not one per row.

I discovered a few days back that ~550 subtransactions is sufficient to
blow max_stack_depth. 1 subtransaction per error doesn't allow many
errors.

-- 
 Simon Riggs           www.2ndQuadrant.com


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to