List:Internals« Previous MessageNext Message »
From:Sergei Golubchik Date:October 5 2005 7:58pm
Subject:bk commit into 5.0 tree (serg:1.2017) BUG#12935
View as plain text  
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#12935Sergei Golubchik5 Oct