2014-06-17 8:46 GMT+02:00 xbzhang <xbzh...@kingbase.com.cn>:

> one resource owner per tuples, when error happens, only release resource
> owner belong to error tuple.
> Why some memory structures should be in undefined state? Can you give
> some examples?
>

there can be raised any exception -- any non fatal exception. I remember,
when I wrote some similar without exception, then it was very unstable.

Pavel


>
>
> *From:* Pavel Stehule <pavel.steh...@gmail.com>
> *Date:* 2014-06-17 14:01
> *To:* xbzhang <xbzh...@kingbase.com.cn>
> *CC:* Alvaro Herrera <alvhe...@2ndquadrant.com>; pgsql-hackers
> <pgsql-hackers@postgresql.org>
> *Subject:* Re: Re: [HACKERS] How to implement the skip errors for copy
> from ?
>
>
>
> 2014-06-17 7:30 GMT+02:00 xbzhang <xbzh...@kingbase.com.cn>:
>
>> Use subtransaction , the tuples that had inserted into heap  must be
>> inserted again  when some exception is raised,
>> it is too expensive.
>> My solution is :
>> 1. delete the tuple that caused the error tuple;
>> 2. release all the resources when  inserting  the tuple;
>> 3. continue insert next tuple
>> Is it feasible?  Anybody give me some suggestion?
>>
>
> no, it should not work - after any exception some memory structures should
> be in undefined state. Errors in PostgreSQL are destructive and any error
> must be followed by ROLLBACK.
>
> Subtransaction for any row is expensive, but subtransaction for some block
> is cheap
>
> Regards
>
> Pavel
>
>
>>
>> ------------------------------
>>
>> 张晓博   研发二部
>>
>> 北京人大金仓信息技术股份有限公司
>>
>> 地址:北京市海淀区上地西路八号院上地科技大厦4号楼501
>>
>> 邮编:100085
>>
>> 电话:(010) 5885 1118 - 8450
>>
>> 手机:15311394463
>>
>> 邮箱:xbzh...@kingbase.com.cn
>>
>>
>> *From:* Alvaro Herrera <alvhe...@2ndquadrant.com>
>> *Date:* 2014-06-17 02:37
>> *To:* Pavel Stehule <pavel.steh...@gmail.com>
>> *CC:* xbzhang <xbzh...@kingbase.com.cn>; pgsql-hackers
>> <pgsql-hackers@postgresql.org>
>> *Subject:* Re: [HACKERS] How to implement the skip errors for copy from ?
>> Pavel Stehule wrote:
>> > 2014-06-16 11:46 GMT+02:00 xbzhang <xbzh...@kingbase.com.cn>:
>> >
>> > >
>> > > I want to implement the skip errors for copy from,lik as :
>> > > create table A (c int primary key);
>> > > copy A from stdin;
>> > > 1
>> > > 1
>> > > 2
>> > > \.
>> > >
>> > > copy will failed:
>> > > ERROR: duplicate key violates primary key constraint "CC_PKEY"
>> > > CONTEXT: COPY CC, line 2: "1"
>> > >
>> > > I want skip the error, and continue to copy the reset of tuple. The
>> result
>> > > will be that there are two rows in table A: 1 and 2.
>> > >
>> > > how to implement that ? Anybody give me some suggestion?
>> >
>> > you should to reimplement a copy procedure to use a subtransactions.
>> Using
>> > subtransaction for any row is too expensive, but you can do
>> subtransaction
>> > per 1000 rows, and when some exception is raised, then store data per
>> one
>> > row/one subtransaction.
>>
>> See http://pgloader.io/ for a ready-made solution.
>>
>> --
>> Álvaro Herrera                http://www.2ndQuadrant.com/
>> PostgreSQL Development, 24x7 Support, Training & Services
>>
>>
>>
>>
>> -----
>> ???????????
>> ????:AVG - www.avg.com
>> ??:2013.0.3480 / ?????:3955/7685 - ????:06/16/14
>>
>>
>>
> 在此邮件中未发现病毒。
> 检查工具:AVG - www.avg.com
> 版本:2013.0.3480 / 病毒数据库:3955/7689 - 发布日期:06/16/14
>
>

Reply via email to