Below is the list of changes that have just been committed into a local
5.0 repository of serg. When serg does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet
1.2017 05/10/05 19:58:16 serg@stripped +4 -0
Bug#12935 Local and XA transactions not mutually exclusive
sql/sql_parse.cc
1.499 05/10/05 19:58:04 serg@stripped +18 -0
Bug#12935 Local and XA transactions not mutually exclusive
sql/share/errmsg.txt
1.49 05/10/05 19:58:04 serg@stripped +2 -1
Bug#12935 Local and XA transactions not mutually exclusive
mysql-test/t/xa.test
1.6 05/10/05 19:58:03 serg@stripped +12 -0
Bug#12935 Local and XA transactions not mutually exclusive
mysql-test/r/xa.result
1.4 05/10/05 19:58:03 serg@stripped +10 -2
Bug#12935 Local and XA transactions not mutually exclusive
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: serg
# Host: serg.mylan
# Root: /usr/home/serg/Abk/mysql-5.0
--- 1.498/sql/sql_parse.cc Fri Sep 30 12:56:25 2005
+++ 1.499/sql/sql_parse.cc Wed Oct 5 19:58:04 2005
@@ -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))
{
@@ -1368,6 +1374,12 @@ int end_trans(THD *thd, enum enum_mysql_
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:
/*
@@ -3926,6 +3938,12 @@ end_with_restore_list:
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);
--- 1.48/sql/share/errmsg.txt Fri Sep 30 11:08:17 2005
+++ 1.49/sql/share/errmsg.txt Wed Oct 5 19:58:04 2005
@@ -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
--- 1.3/mysql-test/r/xa.result Wed Oct 5 16:38:40 2005
+++ 1.4/mysql-test/r/xa.result Wed Oct 5 19:58:03 2005
@@ -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';
@@ -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;
@@ -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`
--- 1.5/mysql-test/t/xa.test Wed Oct 5 16:38:40 2005
+++ 1.6/mysql-test/t/xa.test Wed Oct 5 19:58:03 2005
@@ -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;
@@ -41,6 +50,9 @@ xa start 0x7465737462, 0x2030405060, 0xb
insert t1 values (40);
xa end 'testb',' 0@P`',11;
xa prepare 'testb',0x2030405060,11;
+
+--error 1399
+start transaction;
xa recover;
| Thread |
|---|
| • bk commit into 5.0 tree (serg:1.2017) BUG#12935 | Sergei Golubchik | 5 Oct |