Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
23564017
Commit
23564017
authored
Oct 05, 2005
by
serg@serg.mylan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug#12935 Local and XA transactions not mutually exclusive
parent
faa0365d
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
42 additions
and
3 deletions
+42
-3
mysql-test/r/xa.result
mysql-test/r/xa.result
+10
-2
mysql-test/t/xa.test
mysql-test/t/xa.test
+12
-0
sql/share/errmsg.txt
sql/share/errmsg.txt
+2
-1
sql/sql_parse.cc
sql/sql_parse.cc
+18
-0
No files found.
mysql-test/r/xa.result
View file @
23564017
...
...
@@ -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`
...
...
mysql-test/t/xa.test
View file @
23564017
...
...
@@ -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
;
...
...
@@ -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
...
...
sql/share/errmsg.txt
View file @
23564017
...
...
@@ -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
...
...
sql/sql_parse.cc
View file @
23564017
...
...
@@ -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_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
:
/*
...
...
@@ -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
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment