Re: [JDBC] BUG #7766: Running a DML statement that affects more than 4 billion rows results in an exception - Mailing list pgsql-bugs

From Péter Kovács
Subject Re: [JDBC] BUG #7766: Running a DML statement that affects more than 4 billion rows results in an exception
Date
Msg-id CAO01x1FMs2LUBOQhrCB4Kcs5DqoBwKeL88+nCm+P5O6NrpzS5g@mail.gmail.com
Whole thread Raw
In response to Re: [JDBC] BUG #7766: Running a DML statement that affects more than 4 billion rows results in an exception  (Dave Cramer <pg@fastcrypt.com>)
Responses Re: [JDBC] BUG #7766: Running a DML statement that affects more than 4 billion rows results in an exception  (Dave Cramer <pg@fastcrypt.com>)
List pgsql-bugs

But being designed for batch updates, is Statement.SUCCESS_NO_INFO appropriate in the context of plain updates? I think the value of Statement.SUCCESS_NO_INFO is supposed to be opaque. What if it happens to be 3, for example? Client code will think three rows have been affected.

Conversely, if you plan to throw a batch update exception for all successful plain updates affecting too large amount of rows, client code is unlikely to be prepared to handle batch update exceptions for plain updates. (I feel there is also a more general usability problem with the JDBC API for batch updates expecting client code to expect exceptions to be thrown for successful executions. But I may be misunderstanding something...)

Peter

On Jan 12, 2013 10:41 AM, "Dave Cramer" <pg@fastcrypt.com> wrote:
Well since it returns an int and it's impossible to return > 2^32 in an int then we will be returning Statement.SUCCESS_NO_INFO

Dave

Dave Cramer

dave.cramer(at)credativ(dot)ca
http://www.credativ.ca


On Sat, Jan 12, 2013 at 4:27 AM, Péter Kovács <peter.dunay.kovacs@gmail.com> wrote:

I mean what value this method will return for an update statement affecting, say, five billion rows? But I may misunderstand something.

On Jan 12, 2013 9:57 AM, "Dave Cramer" <pg@fastcrypt.com> wrote:
Peter,

Can you be more specific about your concerns ?

Dave

Dave Cramer

dave.cramer(at)credativ(dot)ca
http://www.credativ.ca


On Sat, Jan 12, 2013 at 3:25 AM, Péter Kovács <peter.dunay.kovacs@gmail.com> wrote:

And what about http://docs.oracle.com/javase/6/docs/api/java/sql/Statement.html#getUpdateCount() ?

P.

On Jan 11, 2013 2:20 PM, "Dave Cramer" <pg@fastcrypt.com> wrote:
Ok, this is much more difficult than I thought.

Turns out that there are at least two interfaces that expect an int not a long.

BatchUpdateException
executeBatch

I'm thinking the only option here is to report INT_MAX as opposed to failing.

Thoughts ?

Dave


Dave Cramer

dave.cramer(at)credativ(dot)ca
http://www.credativ.ca


On Fri, Dec 21, 2012 at 3:17 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Dave Cramer <pg@fastcrypt.com> writes:
> So an unsigned long won't fit inside a java long either, but hopefully it
> will never be necessary. That would be a huge number of changes.

I think we'll all be safely dead by the time anybody manages to process
2^63 rows in one PG command ;-).  If you can widen the value from int to
long on the Java side, that should be sufficient.

                        regards, tom lane



pgsql-bugs by date:

Previous
From: Dave Cramer
Date:
Subject: Re: [JDBC] BUG #7766: Running a DML statement that affects more than 4 billion rows results in an exception
Next
From: Dave Cramer
Date:
Subject: Re: [JDBC] BUG #7766: Running a DML statement that affects more than 4 billion rows results in an exception