From: | Padraic Renaghan <list(at)renaghan(dot)com> |
---|---|
To: | pgsql-jdbc(at)postgresql(dot)org |
Subject: | Re: Batch Update updatecounts when error happens |
Date: | 2002-08-29 03:43:04 |
Message-ID: | E17kGD3-0001Tz-00@armagh.local |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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(at)renaghan(dot)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(at)renaghan(dot)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(at)renaghan(dot)com
> IM: abuhaina (AOL/Yahoo/MSN) 9437815 (ICQ)
> http://renaghan.com/pcr/
> lure -> 390sig006(at)renaghan(dot)com <- don't use
>
--
Padraic Renaghan /pad-rik ren-a-han/
padraic(at)renaghan(dot)com
IM: abuhaina (AOL/Yahoo/MSN) 9437815 (ICQ)
http://renaghan.com/pcr/
lure --> 123sig987(at)renaghan(dot)com <-- don't use
From | Date | Subject | |
---|---|---|---|
Next Message | Teofilis Martisius | 2002-08-29 11:44:29 | JDBC patch, so that bigint indexes get used |
Previous Message | Padraic Renaghan | 2002-08-28 19:12:01 | Re: Batch Update updatecounts when error happens |