Re: JDBC gripe list (the autocommit subthread)

Поиск
Список
Период
Сортировка
От Dave Cramer
Тема Re: JDBC gripe list (the autocommit subthread)
Дата
Msg-id AANLkTik6dA6oRginYNE+uHC_sHyrw2SNhA5oL766Q3rv@mail.gmail.com
обсуждение исходный текст
Ответ на Re: JDBC gripe list (the autocommit subthread)  ("Kevin Grittner" <Kevin.Grittner@wicourts.gov>)
Список pgsql-jdbc
On Wed, Mar 30, 2011 at 10:55 AM, Kevin Grittner
<Kevin.Grittner@wicourts.gov> wrote:
> Quartz <quartz12h@yahoo.com> wrote:
>
>> If addBatch was not meant to be called when autocommit=true, then
>> it would have thrown an exception. The point is to enable multiple
>> statement in 1 executeBatch call. Just imagine a system that
>> separates who makes statements and who executes them. Like event
>> logging lets say. Meanwhile, there are infinite cases where
>> multiple statements are not (and must not) be in a all-or-nothing
>> transaction. This is why applications choose to set
>> autocommit=true to obtain the batch behavior without a TX. It's in
>> the API for such reasons.
>
> The docs say something completely at odds with your assertion:
>
> | a JDBC driver may or may not continue to process the remaining
> | commands in the batch. However, the driver's behavior must be
> | consistent with a particular DBMS, either always continuing to
> | process commands or never continuing to process commands.
>
>> It is just incorrect to consider the batch is 1 transaction when
>> the API clearly exposes the ability to avoid it.
>
> And the option not to.
>
>> As I wrote earlier, calling applications that just pile up updates
>> in a batch not expecting any deadlock due to row locking by each
>> statement, will not work anymore.
>
> Anymore?  When did batches in PostgreSQL work that way?
>
>> The fact the API have autocommit independant from batches means it
>> serve a purpose. I see it. But even if I didn't, the API says so
>> and I can't second guess it.
>
> You are misreading it.
>
>> I know it hurts to learn such truth after such a long delay.
>> You'll get over it!
>
> That's not the way to persuade people.  You're approaching the point
> where people will just start ignoring your posts as noise.
>
> The bottom line is that there is a perfectly clean and portable way
> to run the statements such that you can ignore or retry failures --
> execute each separately in your Java code.  That you chose to use an
> API which allows but doesn't require a driver to support the
> behavior you want doesn't make the behavior mandatory.  Most people
> use the batch feature for performance, and in PostgreSQL it would
> reduce the performance of the batch feature to accommodate what you
> propose.
>
>> I have found a 4 year old bug lately, in my own code. I know the
>> feeling.
>
> It would appear that you've found but not yet recognized another bug
> -- inappropriate use of an API.  You're counting on an
> implementation detail rather than the documented API, and that's a
> bug.
>
> -Kevin
>

Thanks Kevin

+1

Dave Cramer

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

В списке pgsql-jdbc по дате отправления:

Предыдущее
От: "Kevin Grittner"
Дата:
Сообщение: Re: JDBC gripe list (the autocommit subthread)
Следующее
От: "David Patricola"
Дата:
Сообщение: SSL connection failure