On 3/23/11 12:08 PM, Jon Olav Hauglid wrote:
> #At file:///export/home/x/mysql-trunk-bug11766752/ based on
> 3316 Jon Olav Hauglid 2011-03-23
> Bug #11766752 (former 59936)
> Multiple XA assertions - transactional statement fuzzer
> The problem was that the server for several statements did not check
> the state of the current XA transaction (if any) before trying to
> execute the statement. Specifically, you are not supposed to do
> anything other than XA PREPARE / XA COMMIT ONE PHASE when in IDLE state,
> or anything other than XA COMMIT / XA ROLLBACK in PREPARED state.
> The assertions triggered by the testcase posted in the bug report,
> was triggered by trying to access a table or rollback to a savepoint
> when the current XA transaction was in PREPARED state.
> This patch fixes the problem by reporting ER_XAER_RMFAIL error if
> 1) A statement is issued which requires a table to be opened
> when XA state is IDLE or PREPARED.
> 2) SAVEPOINT or ROLLBACK TO SAVEPOINT is executed with an active
> XA transaction. (Similar to what is already done for COMMIT/ROLLBACK)
Please add a note that this is an incompatible change.
> Test case added to xa.test.
> Also verified with the C testcase posted on the bug report.
OK to push.