mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 02:05:57 +01:00
MDEV-19794 Spider crash with XA
This commit is contained in:
parent
b01c426146
commit
ad1a3ce418
6 changed files with 193 additions and 4 deletions
|
@ -0,0 +1,11 @@
|
|||
--let $MASTER_1_COMMENT_2_1= $MASTER_1_COMMENT_2_1_BACKUP
|
||||
--let $CHILD2_1_DROP_TABLES= $CHILD2_1_DROP_TABLES_BACKUP
|
||||
--let $CHILD2_1_CREATE_TABLES= $CHILD2_1_CREATE_TABLES_BACKUP
|
||||
--let $CHILD2_1_SELECT_TABLES= $CHILD2_1_SELECT_TABLES_BACKUP
|
||||
--disable_warnings
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
--source ../t/test_deinit.inc
|
||||
--enable_result_log
|
||||
--enable_query_log
|
||||
--enable_warnings
|
|
@ -0,0 +1,24 @@
|
|||
--disable_warnings
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
--source ../t/test_init.inc
|
||||
--enable_result_log
|
||||
--enable_query_log
|
||||
--enable_warnings
|
||||
--let $MASTER_1_COMMENT_2_1_BACKUP= $MASTER_1_COMMENT_2_1
|
||||
let $MASTER_1_COMMENT_2_1=
|
||||
COMMENT='table "tbl_a", srv "s_2_1"';
|
||||
--let $CHILD2_1_DROP_TABLES_BACKUP= $CHILD2_1_DROP_TABLES
|
||||
let $CHILD2_1_DROP_TABLES=
|
||||
DROP TABLE IF EXISTS tbl_a;
|
||||
--let $CHILD2_1_CREATE_TABLES_BACKUP= $CHILD2_1_CREATE_TABLES
|
||||
let $CHILD2_1_CREATE_TABLES=
|
||||
CREATE TABLE tbl_a (
|
||||
pkey int NOT NULL,
|
||||
PRIMARY KEY (pkey)
|
||||
) $CHILD2_1_ENGINE $CHILD2_1_CHARSET;
|
||||
--let $CHILD2_1_SELECT_TABLES_BACKUP= $CHILD2_1_SELECT_TABLES
|
||||
let $CHILD2_1_SELECT_TABLES=
|
||||
SELECT pkey FROM tbl_a ORDER BY pkey;
|
||||
let $CHILD2_1_SELECT_ARGUMENT1=
|
||||
SELECT argument FROM mysql.general_log WHERE argument LIKE '%insert %';
|
70
storage/spider/mysql-test/spider/bugfix/r/xa_cmd.result
Normal file
70
storage/spider/mysql-test/spider/bugfix/r/xa_cmd.result
Normal file
|
@ -0,0 +1,70 @@
|
|||
for master_1
|
||||
for child2
|
||||
child2_1
|
||||
child2_2
|
||||
child2_3
|
||||
for child3
|
||||
|
||||
this test is for MDEV-19794
|
||||
|
||||
drop and create databases
|
||||
connection master_1;
|
||||
CREATE DATABASE auto_test_local;
|
||||
USE auto_test_local;
|
||||
connection child2_1;
|
||||
SET @old_log_output = @@global.log_output;
|
||||
SET GLOBAL log_output = 'TABLE,FILE';
|
||||
CREATE DATABASE auto_test_remote;
|
||||
USE auto_test_remote;
|
||||
|
||||
create table and insert
|
||||
connection child2_1;
|
||||
CHILD2_1_CREATE_TABLES
|
||||
TRUNCATE TABLE mysql.general_log;
|
||||
connection master_1;
|
||||
CREATE TABLE tbl_a (
|
||||
pkey int NOT NULL,
|
||||
PRIMARY KEY (pkey)
|
||||
) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1
|
||||
connection child2_1;
|
||||
TRUNCATE TABLE mysql.general_log;
|
||||
connection master_1;
|
||||
XA START 'test';
|
||||
INSERT INTO tbl_a (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
XA END 'test';
|
||||
XA PREPARE 'test';
|
||||
Warnings:
|
||||
Warning 1030 Got error 131 "Command not supported by the engine" from storage engine Aria
|
||||
XA COMMIT 'test';
|
||||
connection child2_1;
|
||||
SELECT argument FROM mysql.general_log WHERE argument LIKE '%insert %';
|
||||
argument
|
||||
insert into `auto_test_remote`.`tbl_a`(`pkey`)values(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)
|
||||
SELECT argument FROM mysql.general_log WHERE argument LIKE '%insert %'
|
||||
SELECT pkey FROM tbl_a ORDER BY pkey;
|
||||
pkey
|
||||
0
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
|
||||
deinit
|
||||
connection master_1;
|
||||
DROP DATABASE IF EXISTS auto_test_local;
|
||||
connection child2_1;
|
||||
DROP DATABASE IF EXISTS auto_test_remote;
|
||||
SET GLOBAL log_output = @old_log_output;
|
||||
for master_1
|
||||
for child2
|
||||
child2_1
|
||||
child2_2
|
||||
child2_3
|
||||
for child3
|
||||
|
||||
end of test
|
3
storage/spider/mysql-test/spider/bugfix/t/xa_cmd.cnf
Normal file
3
storage/spider/mysql-test/spider/bugfix/t/xa_cmd.cnf
Normal file
|
@ -0,0 +1,3 @@
|
|||
!include include/default_mysqld.cnf
|
||||
!include ../my_1_1.cnf
|
||||
!include ../my_2_1.cnf
|
69
storage/spider/mysql-test/spider/bugfix/t/xa_cmd.test
Normal file
69
storage/spider/mysql-test/spider/bugfix/t/xa_cmd.test
Normal file
|
@ -0,0 +1,69 @@
|
|||
--source ../include/xa_cmd_init.inc
|
||||
--echo
|
||||
--echo this test is for MDEV-19794
|
||||
--echo
|
||||
--echo drop and create databases
|
||||
|
||||
--connection master_1
|
||||
--disable_warnings
|
||||
CREATE DATABASE auto_test_local;
|
||||
USE auto_test_local;
|
||||
|
||||
--connection child2_1
|
||||
SET @old_log_output = @@global.log_output;
|
||||
SET GLOBAL log_output = 'TABLE,FILE';
|
||||
CREATE DATABASE auto_test_remote;
|
||||
USE auto_test_remote;
|
||||
--enable_warnings
|
||||
|
||||
--echo
|
||||
--echo create table and insert
|
||||
|
||||
--connection child2_1
|
||||
--disable_query_log
|
||||
echo CHILD2_1_CREATE_TABLES;
|
||||
eval $CHILD2_1_CREATE_TABLES;
|
||||
--enable_query_log
|
||||
TRUNCATE TABLE mysql.general_log;
|
||||
|
||||
--connection master_1
|
||||
--disable_query_log
|
||||
echo CREATE TABLE tbl_a (
|
||||
pkey int NOT NULL,
|
||||
PRIMARY KEY (pkey)
|
||||
) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1;
|
||||
eval CREATE TABLE tbl_a (
|
||||
pkey int NOT NULL,
|
||||
PRIMARY KEY (pkey)
|
||||
) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1;
|
||||
--enable_query_log
|
||||
|
||||
--connection child2_1
|
||||
TRUNCATE TABLE mysql.general_log;
|
||||
|
||||
--connection master_1
|
||||
XA START 'test';
|
||||
INSERT INTO tbl_a (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
XA END 'test';
|
||||
XA PREPARE 'test';
|
||||
XA COMMIT 'test';
|
||||
|
||||
--connection child2_1
|
||||
eval $CHILD2_1_SELECT_ARGUMENT1;
|
||||
eval $CHILD2_1_SELECT_TABLES;
|
||||
|
||||
--echo
|
||||
--echo deinit
|
||||
--disable_warnings
|
||||
|
||||
--connection master_1
|
||||
DROP DATABASE IF EXISTS auto_test_local;
|
||||
|
||||
--connection child2_1
|
||||
DROP DATABASE IF EXISTS auto_test_remote;
|
||||
SET GLOBAL log_output = @old_log_output;
|
||||
|
||||
--enable_warnings
|
||||
--source ../include/xa_cmd_deinit.inc
|
||||
--echo
|
||||
--echo end of test
|
|
@ -2294,7 +2294,10 @@ int spider_internal_xa_commit(
|
|||
spider_close_sys_table(thd, table_xa, &open_tables_backup, TRUE);
|
||||
table_xa_opened = FALSE;
|
||||
}
|
||||
spider_xa_unlock(&trx->internal_xid_state);
|
||||
if (trx->internal_xa)
|
||||
{
|
||||
spider_xa_unlock(&trx->internal_xid_state);
|
||||
}
|
||||
DBUG_RETURN(0);
|
||||
|
||||
error:
|
||||
|
@ -2304,7 +2307,10 @@ error:
|
|||
spider_close_sys_table(thd, table_xa_member, &open_tables_backup, TRUE);
|
||||
error_in_commit:
|
||||
error_open_table:
|
||||
spider_xa_unlock(&trx->internal_xid_state);
|
||||
if (trx->internal_xa)
|
||||
{
|
||||
spider_xa_unlock(&trx->internal_xid_state);
|
||||
}
|
||||
DBUG_RETURN(error_num);
|
||||
}
|
||||
|
||||
|
@ -2530,7 +2536,10 @@ int spider_internal_xa_rollback(
|
|||
spider_close_sys_table(thd, table_xa, &open_tables_backup, TRUE);
|
||||
table_xa_opened = FALSE;
|
||||
}
|
||||
spider_xa_unlock(&trx->internal_xid_state);
|
||||
if (trx->internal_xa)
|
||||
{
|
||||
spider_xa_unlock(&trx->internal_xid_state);
|
||||
}
|
||||
DBUG_RETURN(0);
|
||||
|
||||
error:
|
||||
|
@ -2540,7 +2549,10 @@ error:
|
|||
spider_close_sys_table(thd, table_xa_member, &open_tables_backup, TRUE);
|
||||
error_in_rollback:
|
||||
error_open_table:
|
||||
spider_xa_unlock(&trx->internal_xid_state);
|
||||
if (trx->internal_xa)
|
||||
{
|
||||
spider_xa_unlock(&trx->internal_xid_state);
|
||||
}
|
||||
DBUG_RETURN(error_num);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue