default value of auto-commit in XA-Connection of oracle-thin driver
513879May 19 2006 — edited May 22 2006Problem with Oracle Thin Driver :
I am using the above driver to get a XA Connection and I found that auto-commit value of it is false by default.
But the specification says, auto-commit has to be true by default.
From JDBC Specification 3.0, Chapter 10.1.1 > Disabling AutoCommit mode :
" The default is for auto-commit mode to be enabled when the Connection object is
created. If the value of auto-commit is changed in the middle of a transaction, the
current transaction is committed. It is an error to enable auto-commit for a
connection participating in a distributed transaction, as described in Chapter 12
“Distributed Transactions”. "
Chapter 12 > 12.4 Transaction Management :
"In contrast to the local case, the boundaries of a
distributed transaction must be controlled by an external transaction manager that is
coordinating the work of multiple connections. For this reason, it is an error for
applications to call any of the following Connection methods while they are
participating in a distributed transaction:
setAutoCommit(true)
commit
rollback
setSavepoint
The JDBC driver throws an SQLException if one of these operations is attempted
on a connection that is participating in a distributed transaction. If the connection is
later used for a local transaction, these operations are legal at that point."
From these excerpts what I could understand is auto-commit for XA's connection need to be true when created and auto-commit can not be set to true when a transaction in progress.
Please let me know if this is a bug.
If this is not a bug, what is the reason behind having auto-commit as false. (documentation or pointers will also help)
Thanks,
-Jagadish