Loading mysql-test/r/xa.result +10 −2 Original line number Diff line number Diff line Loading @@ -9,10 +9,10 @@ select * from t1; a xa start 'test2'; xa start 'test-bad'; ERROR XAE07: XAER_RMFAIL: The command cannot be executed in the ACTIVE state ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the ACTIVE state insert t1 values (20); xa prepare 'test2'; ERROR XAE07: XAER_RMFAIL: The command cannot be executed in the ACTIVE state ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the ACTIVE state xa end 'test2'; xa prepare 'test2'; xa commit 'test2'; Loading @@ -21,7 +21,13 @@ a 20 xa start 'testa','testb'; insert t1 values (30); commit; ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the ACTIVE state xa end 'testa','testb'; begin; ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the IDLE state create table t2 (a int); ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the IDLE state xa start 'testa','testb'; ERROR XAE08: XAER_DUPID: The XID already exists xa start 'testa','testb', 123; Loading @@ -30,6 +36,8 @@ xa start 0x7465737462, 0x2030405060, 0xb; insert t1 values (40); xa end 'testb',' 0@P`',11; xa prepare 'testb',0x2030405060,11; start transaction; ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the PREPARED state xa recover; formatID gtrid_length bqual_length data 11 5 5 testb 0@P` Loading mysql-test/t/xa.test +12 −0 Original line number Diff line number Diff line Loading @@ -26,8 +26,17 @@ select * from t1; xa start 'testa','testb'; insert t1 values (30); --error 1399 commit; xa end 'testa','testb'; --error 1399 begin; --error 1399 create table t2 (a int); connect (con1,localhost,,,); connection con1; Loading @@ -42,6 +51,9 @@ insert t1 values (40); xa end 'testb',' 0@P`',11; xa prepare 'testb',0x2030405060,11; --error 1399 start transaction; xa recover; # uncomment the line below when binlog will be able to prepare Loading sql/share/errmsg.txt +2 −1 Original line number Diff line number Diff line Loading @@ -5311,7 +5311,8 @@ ER_XAER_NOTA XAE04 ER_XAER_INVAL XAE05 eng "XAER_INVAL: Invalid arguments (or unsupported command)" ER_XAER_RMFAIL XAE07 eng "XAER_RMFAIL: The command cannot be executed in the %.64s state" eng "XAER_RMFAIL: The command cannot be executed when global transaction is in the %.64s state" rus "XAER_RMFAIL: '%.64s'" ER_XAER_OUTSIDE XAE09 eng "XAER_OUTSIDE: Some work is done outside global transaction" ER_XAER_RMERR XAE03 Loading sql/sql_parse.cc +18 −0 Original line number Diff line number Diff line Loading @@ -134,6 +134,12 @@ static bool end_active_trans(THD *thd) my_error(ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG, MYF(0)); DBUG_RETURN(1); } if (thd->transaction.xid_state.xa_state != XA_NOTR) { my_error(ER_XAER_RMFAIL, MYF(0), xa_state_names[thd->transaction.xid_state.xa_state]); DBUG_RETURN(1); } if (thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN | OPTION_TABLE_LOCK)) { Loading Loading @@ -1368,6 +1374,12 @@ int end_trans(THD *thd, enum enum_mysql_completiontype completion) my_error(ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG, MYF(0)); DBUG_RETURN(1); } if (thd->transaction.xid_state.xa_state != XA_NOTR) { my_error(ER_XAER_RMFAIL, MYF(0), xa_state_names[thd->transaction.xid_state.xa_state]); DBUG_RETURN(1); } switch (completion) { case COMMIT: /* Loading Loading @@ -3926,6 +3938,12 @@ mysql_execute_command(THD *thd) break; case SQLCOM_BEGIN: if (thd->transaction.xid_state.xa_state != XA_NOTR) { my_error(ER_XAER_RMFAIL, MYF(0), xa_state_names[thd->transaction.xid_state.xa_state]); break; } if (begin_trans(thd)) goto error; send_ok(thd); Loading Loading
mysql-test/r/xa.result +10 −2 Original line number Diff line number Diff line Loading @@ -9,10 +9,10 @@ select * from t1; a xa start 'test2'; xa start 'test-bad'; ERROR XAE07: XAER_RMFAIL: The command cannot be executed in the ACTIVE state ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the ACTIVE state insert t1 values (20); xa prepare 'test2'; ERROR XAE07: XAER_RMFAIL: The command cannot be executed in the ACTIVE state ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the ACTIVE state xa end 'test2'; xa prepare 'test2'; xa commit 'test2'; Loading @@ -21,7 +21,13 @@ a 20 xa start 'testa','testb'; insert t1 values (30); commit; ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the ACTIVE state xa end 'testa','testb'; begin; ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the IDLE state create table t2 (a int); ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the IDLE state xa start 'testa','testb'; ERROR XAE08: XAER_DUPID: The XID already exists xa start 'testa','testb', 123; Loading @@ -30,6 +36,8 @@ xa start 0x7465737462, 0x2030405060, 0xb; insert t1 values (40); xa end 'testb',' 0@P`',11; xa prepare 'testb',0x2030405060,11; start transaction; ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the PREPARED state xa recover; formatID gtrid_length bqual_length data 11 5 5 testb 0@P` Loading
mysql-test/t/xa.test +12 −0 Original line number Diff line number Diff line Loading @@ -26,8 +26,17 @@ select * from t1; xa start 'testa','testb'; insert t1 values (30); --error 1399 commit; xa end 'testa','testb'; --error 1399 begin; --error 1399 create table t2 (a int); connect (con1,localhost,,,); connection con1; Loading @@ -42,6 +51,9 @@ insert t1 values (40); xa end 'testb',' 0@P`',11; xa prepare 'testb',0x2030405060,11; --error 1399 start transaction; xa recover; # uncomment the line below when binlog will be able to prepare Loading
sql/share/errmsg.txt +2 −1 Original line number Diff line number Diff line Loading @@ -5311,7 +5311,8 @@ ER_XAER_NOTA XAE04 ER_XAER_INVAL XAE05 eng "XAER_INVAL: Invalid arguments (or unsupported command)" ER_XAER_RMFAIL XAE07 eng "XAER_RMFAIL: The command cannot be executed in the %.64s state" eng "XAER_RMFAIL: The command cannot be executed when global transaction is in the %.64s state" rus "XAER_RMFAIL: '%.64s'" ER_XAER_OUTSIDE XAE09 eng "XAER_OUTSIDE: Some work is done outside global transaction" ER_XAER_RMERR XAE03 Loading
sql/sql_parse.cc +18 −0 Original line number Diff line number Diff line Loading @@ -134,6 +134,12 @@ static bool end_active_trans(THD *thd) my_error(ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG, MYF(0)); DBUG_RETURN(1); } if (thd->transaction.xid_state.xa_state != XA_NOTR) { my_error(ER_XAER_RMFAIL, MYF(0), xa_state_names[thd->transaction.xid_state.xa_state]); DBUG_RETURN(1); } if (thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN | OPTION_TABLE_LOCK)) { Loading Loading @@ -1368,6 +1374,12 @@ int end_trans(THD *thd, enum enum_mysql_completiontype completion) my_error(ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG, MYF(0)); DBUG_RETURN(1); } if (thd->transaction.xid_state.xa_state != XA_NOTR) { my_error(ER_XAER_RMFAIL, MYF(0), xa_state_names[thd->transaction.xid_state.xa_state]); DBUG_RETURN(1); } switch (completion) { case COMMIT: /* Loading Loading @@ -3926,6 +3938,12 @@ mysql_execute_command(THD *thd) break; case SQLCOM_BEGIN: if (thd->transaction.xid_state.xa_state != XA_NOTR) { my_error(ER_XAER_RMFAIL, MYF(0), xa_state_names[thd->transaction.xid_state.xa_state]); break; } if (begin_trans(thd)) goto error; send_ok(thd); Loading