db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kathey Marsden <kmarsdende...@sbcglobal.net>
Subject Re: Question about holdability and XA
Date Tue, 14 Jun 2005 22:49:08 GMT
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
> JDK14+   CLOSE_CURSORS_AT_COMMIT       conn holdability (Default
> 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
> 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.

View raw message