Mamta Satoor wrote: > Just to be sure, so it is correct for local connection to pick up the > global transaction's isolation level in the example scenario below?
>> Within the global >> transaction, I change the isolation level to RS and then exit the global >> transaction so the connection is now attached to the local transaction. >> The isolation level at this point is set to RS rather than UR. This No, the local connection is not picking up the global transaction's isolation level. It is reflecting the state of the Connection object. Isolation level and the other states affected are states of the Connection object. So the application has stated through the setTransactionIsolation call that its *Connection* is at RS level. Thus any subsequent transaction that it *starts* will be at RS level. This difference comes when the application using this Connection joins an *existing* global transaction that is at a *different* isolation level (say RR) to the Connection. Changing the isolation level of the transaction to match the Connection (RS) seems wrong and in Derby would force a commit, which is definitely not the desired behaviour as that would end the global transaction. So getTransactionIsolation has to return RR as it would be misleading (and incorrect?) to return RS. But the Connection object is still at RS, so when the new *local* transaction is started it will be at RS. I also believe that setIsolationLevel within a global transaction will throw an exception if the transaction has performed some work. A similar but simpler issue exists with auto commit mode, again a state of the Connection. But in this case, when the Connection object is attached to a global transaction the auto commit mode must be false by definition of the JBDC spec. But on reverting to a local transaction the state of auto-commit reverts to the state that the Connection object had before attaching the global transaction. This revert behaviour is defined by the last paragraph of section 12.4 of the JDBC 3.0 spec. Then the model of defined auto-commit revert behaviour was followed for the other Connection state, such as isolation level. I think when Derby was closed source at IBM we worked these issues with the JDBC EG through the IBM rep. Dan.
