Re: Batch Update updatecounts when error happens - Mailing list pgsql-jdbc

From Padraic Renaghan
Subject Re: Batch Update updatecounts when error happens
Date
Msg-id E17kGD3-0001Tz-00@armagh.local
Whole thread Raw
In response to Re: Batch Update updatecounts when error happens  (Padraic Renaghan <list@renaghan.com>)
List pgsql-jdbc
Sorry for talking with myself again...

So I tried the code change below. Got slightly better results:

updateCounts[0]=1
updateCounts[1]=0

I really think that second entry should be a -3. So I added one more
line to that block so it now becomes:

result[i]=-3;
int len=i+1;
int[] resultSucceeded = new int[len];
System.arraycopy(result, 0, resultSucceeded, 0, len);

This worked best. I now get

updateCounts[0]=1
updateCounts[1]=-3

So if folks think that is a valid change, I'll whip up a patch file
and send it back to this list for further consideration.

Thoughts?

Thanks,
Padraic

* Padraic Renaghan <list@renaghan.com> [Aug 28 12:12pm]:

> I think I might have figured it out. I think there might be a bug in the
> Postgresql driver. Specifically in the jdbc2/Statement.java file, the lines in
> executeBatch() that read:
>
>   int[] resultSucceeded = new int[i];
>   System.arraycopy(result, 0, resultSucceeded, 0, i);
>
> should really be:
>
>   int len = i+1;
>   int[] resultSucceeded = new int[len];
>   System.arraycopy(result, 0, resultSucceeded, 0, len);
>
> I think that would do the trick. I'll now working on getting a modified version
> built so I can test it.
>
> Think I'm on the right track? wrong track?
>
>
> Thanks,
> Padraic
>
> Quoting Padraic Renaghan <list@renaghan.com>:
> > I'm having trouble with the error handling of the batch update feature
> > of the
> > JDBC 2.0 Postgresql driver. I do not see the standard behavior of
> > returing a -3
> > for the statement that failed.
> >
> > In my example I insert mutliple rows in a single batch into a table. All
> > the
> > inserts have the same key value, which causes the second insert to fail
> > with a
> > duplicate key error.
> >
> > I get thrown back the BatchUpdateException which has the updateCounts
> > array
> > which I access via getUpdateCounts(). That array contains a single
> > entry,
> > updateCounts[0]=1. I am not seeing the -3 entry to indicate the stmt
> > that
> > failed. According to my assumptions about how JDBC 2.0 batch updates are
> >
> > supposed to work (and according to the JDBC--Postgresql compatability
> > web page)
> > I was hoping to see the updateCounts array contain:
> > updateCounts[0]=1
> > updateCounts[1]=-3
> >
> > I'm currently using Postgresql 7.2 and the JDBC driver installed with
> > the
> > Postgresql distributed rpm. Specifically I'm using jdbc7.2dev-1.2.jar
> >
> > Any help would be appreciated.
> >
> > Thanks
> > Padraic
> >
>
>
>
> --
> Padraic Renaghan /pad-rik ren-a-han/
> padraic@renaghan.com
> IM: abuhaina (AOL/Yahoo/MSN) 9437815 (ICQ)
> http://renaghan.com/pcr/
> lure -> 390sig006@renaghan.com <- don't use
>

--
Padraic Renaghan /pad-rik ren-a-han/
padraic@renaghan.com
IM: abuhaina (AOL/Yahoo/MSN) 9437815 (ICQ)
http://renaghan.com/pcr/
lure --> 123sig987@renaghan.com <-- don't use



pgsql-jdbc by date:

Previous
From: Padraic Renaghan
Date:
Subject: Re: Batch Update updatecounts when error happens
Next
From: "Tarik Choufa"
Date:
Subject: JDBC sources