Subject Re: Is Firebird XA compliant?
Author rboerdijk
Hi Nickolay, Ann, Paul,

> Ah. The firebird two-phase commit was implemented some time before
> XA was designed. Jim looked at it a long time ago for Borland
> and decided that there was some piece of state missing for XA,
> but that it would be possible to implement the MicroSoft
> alternative.

That's what I supsected. My conclusion is that although Firebird has
a 2PC protocol, it is not XA-compliant. I'm a bit worried now about
the JayBird initiative, because they claim to provide XA semantics
whereas Jim (or was it Paul?) concluded that this is not possible
without adding some XA specific logic to the Firebird database engine.

I'm not claiming to be an expert on this matter, but I in my opinion,
if you want to provide an XA compliant JDBC driver, you should:

1. Add the extra logic to the Firebird database engine required to
make the database XA compliant.

2. Create a native XA switch that can be plugged into an XA compliant
transaction manager, such as Tuxedo, and test if it is working.

3. Update the Firebird communication protocol so that it has verbs
for all XA verbs specified by the X/Open XA specification (xa_open(),
xa_close(), xa_start(), xa_end(), xa_prepare(), etc).

4. Implement the XA compliant JDBC driver. This should be really easy
because you can simply map all XAResource methods to the XA verbs
that are already there.

Any plans in this direction?

Robin Boerdijk