db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lance J. Andersen" <Lance.Ander...@Sun.COM>
Subject Re: [jira] Commented: (DERBY-1654) Calling Connection.commit() does not throw exception in autocommit mode
Date Wed, 09 Aug 2006 15:21:21 GMT
This has been a requirement since JDBC 1.0 and at there are no plans to 
change this given the complexity of the autocommit issue with various 
vendors.  It is expected the applications that are well behaved will 
know what mode they are in and invoke the correct methods.


Daniel John Debrunner (JIRA) wrote:
>     [ http://issues.apache.org/jira/browse/DERBY-1654?page=comments#action_12426938 ]

> Daniel John Debrunner commented on DERBY-1654:
> ----------------------------------------------
> I think the behaviour mandated by the spec is a useability problem. If I want to write
a generic method that needs to commit or rollback  the transaction at the end of its work
I have to have extra logic that checks to see if auto-commit is on. I've actually never understood
the logic in disallowing these methods (commit & rollback) in auto-commit mode.  Even
with auto-commit true there are points in time in the user application where a transaction
is active, if the applicaiton wants to commit/rollback  that  work why is a different non-intutive
api required (close the Statement and/or all of its ResultSets) rather than the obvious calls
conn.commit() & rollback()?
>> Calling Connection.commit() does not throw exception in autocommit mode
>> -----------------------------------------------------------------------
>>                 Key: DERBY-1654
>>                 URL: http://issues.apache.org/jira/browse/DERBY-1654
>>             Project: Derby
>>          Issue Type: Bug
>>          Components: JDBC
>>    Affects Versions:
>>            Reporter: Dyre Tjeldvoll
>>            Priority: Minor
>>             Fix For:
>>         Attachments: simple.java
>> The jdbc spec (don't know chapter and verse) states that an attempt to call Connection.commit()
when Connection.getAutoCommit() is true, must throw an exception. The attached repro (simple.java)
runs fine with Derby (and Postgres), but fails with MySQL:
>> dt136804@khepri29~/java$ java -cp $CLASSPATH:. simple com.mysql.jdbc.Driver 'jdbc:mysql://localhost/joindb'
joinuser joinpass foo4
>> java.sql.SQLException: Can't call commit when autocommit=true
>>         at com.mysql.jdbc.Connection.commit(Connection.java:2161)
>>         at simple.main(simple.java:17)

View raw message