Subject Re: [Firebird-Java] XA protocol?
Author Roman Rokytskyy
> for an evalution thingy, we do have to evaluate whether
> Firebird is XA protocol compliant for distributed
> transactions or not.

Hard to say. I will post later a description, how JayBird implements JTA -
Java XA translation. There is at least one case when Firebird will not
handle XA correctly, though in discussion with David Jencks (if I'm not
wrong), it was not clear if XA requires this or not (details later).

> Well, we all know that Firebird is capable to span one
> transaction over multiple databases. Does Firebird use
> here the XA protocol or is the XA protocol something
> different?

One of the most important parts of XA protocol is Xid - ID of the
distributed transaction. And it seems to be required (I have to check specs)
to be possible to suspend XA transaction from one connection, then resume it
from another one. Firebird does not support this feature. David Jencks have
asked long time ago to allow sharing tr_handle between connections, but
either it is not easy to implement, or it is believed to be not important
and nobody takes care about it.

> What do people mean when talking about the XA protocol?

In Java they mean support of XADataSource and/or JCA with XAResource
interfaces. JayBird has some logic to handle Xid, however that does not work
when two JVMs connect to the same database with the same Xid. It is not
clear what specification tells about this case, however our JVMs will
conflict on updates. As far as I know all other cases are supported
correctly.

I will try to prepare a description either today or tomorrow.

Roman