xa.test 2.6 KB
Newer Older
unknown's avatar
unknown committed
1 2 3 4
#
# WL#1756
#
-- source include/have_innodb.inc
5 6 7 8

# Save the initial number of concurrent sessions
--source include/count_sessions.inc

unknown's avatar
unknown committed
9 10 11 12 13 14 15 16 17 18 19 20
--disable_warnings
drop table if exists t1, t2;
--enable_warnings
create table t1 (a int) engine=innodb;
xa start 'test1';
insert t1 values (10);
xa end 'test1';
xa prepare 'test1';
xa rollback 'test1';
select * from t1;

xa start 'test2';
21
--error ER_XAER_RMFAIL
unknown's avatar
unknown committed
22 23
xa start 'test-bad';
insert t1 values (20);
24
--error ER_XAER_RMFAIL
unknown's avatar
unknown committed
25 26 27 28 29 30 31 32
xa prepare 'test2';
xa end 'test2';
xa prepare 'test2';
xa commit 'test2';
select * from t1;

xa start 'testa','testb';
insert t1 values (30);
33

34
--error ER_XAER_RMFAIL
35 36
commit;

unknown's avatar
unknown committed
37 38
xa end 'testa','testb';

39
--error ER_XAER_RMFAIL
40
begin;
41
--error ER_XAER_RMFAIL
42 43
create table t2 (a int);

44
connect (con1,localhost,root,,);
unknown's avatar
unknown committed
45 46
connection con1;

47
--error ER_XAER_DUPID
48
xa start 'testa','testb';
49
--error ER_XAER_DUPID
50
xa start 'testa','testb', 123;
51

52
#        gtrid [ , bqual [ , formatID ] ]
unknown's avatar
unknown committed
53 54 55 56 57
xa start 0x7465737462, 0x2030405060, 0xb;
insert t1 values (40);
xa end 'testb',' 0@P`',11;
xa prepare 'testb',0x2030405060,11;

58
--error ER_XAER_RMFAIL
59 60
start transaction;

unknown's avatar
unknown committed
61 62 63 64 65 66 67 68 69 70
xa recover;

# uncomment the line below when binlog will be able to prepare
#disconnect con1;
connection default;

xa prepare 'testa','testb';

xa recover;

71
--error ER_XAER_NOTA
unknown's avatar
unknown committed
72 73 74
xa commit 'testb',0x2030405060,11;
xa rollback 'testa','testb';

75
--error ER_PARSE_ERROR
unknown's avatar
unknown committed
76 77 78 79 80
xa start 'zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz';

select * from t1;
drop table t1;

81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
disconnect con1;

#
# Bug#28323: Server crashed in xid cache operations
#

--disable_warnings
drop table if exists t1;
--enable_warnings

create table t1(a int, b int, c varchar(20), primary key(a)) engine = innodb;
insert into t1 values(1, 1, 'a');
insert into t1 values(2, 2, 'b');

connect (con1,localhost,root,,);
connect (con2,localhost,root,,);

--connection con1
xa start 'a','b';
update t1 set c = 'aa' where a = 1;
--connection con2
xa start 'a','c';
update t1 set c = 'bb' where a = 2;
--connection con1
--send update t1 set c = 'bb' where a = 2
--connection con2
--sleep 1
--error ER_LOCK_DEADLOCK
update t1 set c = 'aa' where a = 1;
select count(*) from t1;
--error ER_XA_RBDEADLOCK
xa end 'a','c';
xa rollback 'a','c';
--disconnect con2

connect (con3,localhost,root,,);
--connection con3
xa start 'a','c';

--disconnect con1
--disconnect con3
--connection default
123
drop table t1;
124 125

--echo End of 5.0 tests
126

127 128 129 130 131 132 133 134 135 136 137
#
# Bug#44672: Assertion failed: thd->transaction.xid_state.xid.is_null()
#

xa start 'a';
xa end 'a';
xa rollback 'a';
xa start 'a';
xa end 'a';
xa rollback 'a';

138 139 140
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc