Re: autocommit trouble with jdbc on Postgres 7.4 - Mailing list pgsql-jdbc
From | Dave Tenny |
---|---|
Subject | Re: autocommit trouble with jdbc on Postgres 7.4 |
Date | |
Msg-id | 3FCAB28B.6010908@comcast.net Whole thread Raw |
In response to | Re: autocommit trouble with jdbc on Postgres 7.4 (Bob Cart <bob@cartdev.com>) |
Responses |
Re: autocommit trouble with jdbc on Postgres 7.4
(Bob Cart <bob@cartdev.com>)
|
List | pgsql-jdbc |
Bob Cart wrote: > On Nov 30, 2003, at 4:40 PM, Oliver Jowett wrote: > >> AFAIK the driver never generates SET AUTOCOMMIT TO OFF; the only >> thing it >> does with server-side autocommit is to turn it on if the backend >> defaults to >> off (as is possible with a 7.3 server). So I'd hazard a guess that the >> problematic query is actually being generated by your application >> code, not >> the JDBC driver; there's not much the driver can do about that case. >> >> Can you provide the full exception & stack trace that's generated, and >> ideally a statement trace from the backend? >> >> (I took a quick look at the download URL you mentioned in a later >> email, but >> it's registration-required). >> >> -O > > > Right. The driver for 7.4 should not even be able to generate SET > AUTOCOMMIT TO OFF. That's one reason why I think this is a jdbc issue > and not an application issue. The other reason is that the app works > with so many other databases - including postgres 7.3. Also, the > logistics of the release don't make it likely that the driver has been > updated for all the changes that happened late in teh development > cycle of pg7.4. 7.4 was just released a couple of weeks ago. From > looking at various threads out on the net, Tom Lane removed the server > side autocommit pretty recently. Now that the most recent jdbc driver > the 7.4 beta was posted back in september, I don't see how it could > have been patched up to support the autocommit change. Now if you are > right and the driver never was able to SET AUTOCOMMIT TO OFF anyway, > well we do have a tricky one. My guess is the application I'm using > isn't smart enough to come up with an error string that says, "Error: > SET AUTOCOMMIT TO OFF no longer supported". That's delivered via the > jdbc driver. Doesn't seem to me that an app should be able to make the > drive throw that even if it tried. > > Some brave soul out there needs to dig into that part of the driver > code to see what's up. Go for it Oliver! A stacktrace is really called for first before asking some soul to review this. A very reasonable request. The original report said that this was third party code. Any third party code can have a statement.execute("SET AUTOCOMMIT OFF") in their library because they naively implemented their transaction model. And early postgres versions wouldn't have complained (though they might not have generated the right results!). I speak from experience since I was once new enough to JDBC to have done just this and it ran for a long time before I fixed it. So a stacktrace will clarify whether the third party code is doing this, or whether postgresql is doing it, and if so, where it's being done.
pgsql-jdbc by date: