Just an FYI, I have made a JIRA entry for the jdk13 behavior
Derby-366 In jdk13, when a connection transitions from global transaction to local transaction, its default holdability of HOLD_CURSORS_OVER_COMMIT is not restored.
On 6/14/05, Kathey Marsden <[EMAIL PROTECTED]> wrote:
Mamta Satoor wrote:
> Hi Kathey,
>
> Just to summarize, the holdability table will look the same for
> EmbedConnection as well as BrokeredConnection.
>
> Global Transaction
> Local Transaction
> JDK13 CLOSE_CURSORS_AT_COMMIT conn holdability (Default
> HOLD_CURSORS_OVER_COMMIT)
> JDK14+ CLOSE_CURSORS_AT_COMMIT conn holdability (Default
> HOLD_CURSORS_OVER_COMMIT)
>
> A Connection object will have it's holdability set to default which is
> HOLD_CURSORS_OVER_COMMIT. When the connection joins a global
> transaction, the holdability will get switched internally to
> CLOSE_CURSORS_AT_COMMIT. When the connection leaves the global
> transaction and becomes part of local transaction, the holdability is
> restored to what it was before entering the global transaction. It
> works this way in both jdk13 and jdk14+. One thing to keep in mind is
> that PreparedStatement get the holdability from where they are
> prepared and not where they are executed, for instance,
> Start Local Transaction
> Connection holdability (default - HOLD_CURSORS_OVER_COMMIT)
> PreparedStatement (holdability will be HOLD_CURSORS_OVER_COMMIT)
> ResultSet from PreparedStatement will have holdability as
> HOLD_CURSORS_OVER_COMMIT
> Start Global Transaction
> Connection holdability switches to CLOSE_CURSORS_AT_COMMIT
> Another ResultSet from PreparedStatement will attempt to have the
> preparedStatement's holdability and that will cause exception because
> Global transactions do not support holdable cursors.
> Exit Global Transaction and become part of Local Transaction
> Connection holdability back to HOLD_CURSORS_OVER_COMMIT
Thanks Mamta for the summary. Good to understand the intended
behviour while trying to get the client holdability to match the server.
>
> I have come across one bug with jdk13 though, where the holdability is
> not getting restored back to HOLD_CURSORS_OVER_COMMIT when the
> connection becomes part of local transaction after leaving global
> transaction. I will enter a JIRA entry for it and start working on it.
Of course this bug is probably why I am seeing xaSimplePostive.sql pass
for jdk131 with client #:), but great to have that mystery solved too.
.
Kathey
