231 lines
7.0 KiB
Plaintext
231 lines
7.0 KiB
Plaintext
--source suite/xengine/include/have_xengine.inc
|
|
--source include/have_debug.inc
|
|
|
|
connect (dml,localhost,root,,);
|
|
connection default;
|
|
|
|
SET @saved_parallel_read_threads = @@global.xengine_parallel_read_threads;
|
|
SET @saved_sort_buffer_size = @@global.xengine_sort_buffer_size;
|
|
SELECT @@global.xengine_parallel_read_threads;
|
|
SELECT @@global.xengine_sort_buffer_size;
|
|
SET xengine_parallel_read_threads=4;
|
|
SET global xengine_sort_buffer_size=64*1024;
|
|
|
|
--echo Test interrupt during merge when build base
|
|
--echo ###################################################################
|
|
--echo # case 1.1: check local merge interrupt
|
|
--echo ###################################################################
|
|
CREATE TABLE t1(a INT NOT NULL, b TEXT(10485760))ENGINE=XENGINE;
|
|
SHOW CREATE TABLE t1;
|
|
let $i=0;
|
|
--disable_query_log
|
|
while($i < 1000) {
|
|
# each record is about 128 bytes
|
|
--eval INSERT INTO t1 VALUES($i, repeat('1', 128));
|
|
inc $i;
|
|
}
|
|
--enable_query_log
|
|
|
|
SET SESSION DEBUG="+d,crash_during_local_merge";
|
|
SET DEBUG_SYNC= 'xengine.local_merge_interrupted SIGNAL interrupted';
|
|
SEND ALTER TABLE t1 ADD PRIMARY KEY(a);
|
|
|
|
--echo # Switch to connection dml
|
|
connection dml;
|
|
SET DEBUG_SYNC= 'now WAIT_FOR interrupted';
|
|
|
|
--echo # Switch to connection default
|
|
connection default;
|
|
--error 1105
|
|
reap;
|
|
SET SESSION debug="-d,crash_during_local_merge";
|
|
SHOW CREATE TABLE t1;
|
|
CHECK TABLE t1;
|
|
DROP TABLE t1;
|
|
|
|
--echo ###################################################################
|
|
--echo # case 1.2: check global merge interrupt
|
|
--echo ###################################################################
|
|
CREATE TABLE t1(a INT NOT NULL, b TEXT(10485760))ENGINE=XENGINE;
|
|
SHOW CREATE TABLE t1;
|
|
let $i=0;
|
|
--disable_query_log
|
|
while($i < 1000) {
|
|
# each record is about 128 bytes
|
|
--eval INSERT INTO t1 VALUES($i, repeat('1', 128));
|
|
inc $i;
|
|
}
|
|
--enable_query_log
|
|
|
|
SET SESSION DEBUG="+d,crash_during_global_merge";
|
|
SET DEBUG_SYNC= 'xengine.global_merge_interrupted SIGNAL interrupted';
|
|
SEND ALTER TABLE t1 ADD PRIMARY KEY(a);
|
|
|
|
--echo # Switch to connection dml
|
|
connection dml;
|
|
SET DEBUG_SYNC= 'now WAIT_FOR interrupted';
|
|
|
|
--echo # Switch to connection default
|
|
connection default;
|
|
--error 1105
|
|
reap;
|
|
SET SESSION debug="-d,crash_during_global_merge";
|
|
SHOW CREATE TABLE t1;
|
|
CHECK TABLE t1;
|
|
DROP TABLE t1;
|
|
|
|
--echo ###################################################################
|
|
--echo # case 2: dml unique check don't print err in child thread
|
|
--echo ###################################################################
|
|
CREATE TABLE t1(a INT NOT NULL, b TEXT(10485760))ENGINE=XENGINE;
|
|
SHOW CREATE TABLE t1;
|
|
let $i=0;
|
|
--disable_query_log
|
|
while($i < 1000) {
|
|
# each record is about 128 bytes
|
|
--eval INSERT INTO t1 VALUES($i, repeat('1', 128));
|
|
inc $i;
|
|
}
|
|
--enable_query_log
|
|
|
|
SET DEBUG_SYNC= 'xengine.build_base_global_merge_start SIGNAL start_dml WAIT_FOR dml_done';
|
|
SEND ALTER TABLE t1 ADD PRIMARY KEY(a);
|
|
|
|
--echo # Switch to connection dml
|
|
connection dml;
|
|
|
|
# insert key2
|
|
# wait the create pk ddl enter the build_base_global_merge_start point
|
|
SET DEBUG_SYNC= 'now WAIT_FOR start_dml';
|
|
# duplicated for new pk
|
|
eval begin;
|
|
INSERT INTO t1 VALUES(1005, repeat('1', 128));
|
|
INSERT INTO t1 VALUES(1005, repeat('1', 128));
|
|
eval commit;
|
|
# SELECT * FROM t1;
|
|
# signal create pk ddl the key has been inserted
|
|
SET DEBUG_SYNC= 'now SIGNAL dml_done';
|
|
|
|
--echo # Switch to connection default
|
|
connection default;
|
|
# receive the result of alter table, expected create primary key fail
|
|
--error 1062
|
|
reap;
|
|
CHECK TABLE t1;
|
|
|
|
SHOW CREATE TABLE t1;
|
|
# SELECT * FROM t1;
|
|
--echo failed to add primary key
|
|
DROP TABLE t1;
|
|
|
|
--echo ###################################################################
|
|
--echo # case 3: test for thread from 1 to 64 for data size 1000
|
|
--echo ###################################################################
|
|
CREATE TABLE t1(a INT NOT NULL, b TEXT(10485760), PRIMARY KEY(a))ENGINE=XENGINE;
|
|
SHOW CREATE TABLE t1;
|
|
let $i=0;
|
|
--disable_query_log
|
|
while($i < 1000) {
|
|
# each record is about 128 bytes
|
|
--eval INSERT INTO t1 VALUES($i, repeat('1', 128));
|
|
inc $i;
|
|
}
|
|
--enable_query_log
|
|
SET xengine_parallel_read_threads=1;
|
|
ALTER TABLE t1 DROP PRIMARY KEY; ALTER TABLE t1 ADD PRIMARY KEY(a);
|
|
CHECK TABLE t1;
|
|
|
|
SET xengine_parallel_read_threads=2;
|
|
ALTER TABLE t1 DROP PRIMARY KEY; ALTER TABLE t1 ADD PRIMARY KEY(a);
|
|
CHECK TABLE t1;
|
|
|
|
SET xengine_parallel_read_threads=4;
|
|
ALTER TABLE t1 DROP PRIMARY KEY; ALTER TABLE t1 ADD PRIMARY KEY(a);
|
|
CHECK TABLE t1;
|
|
|
|
SET xengine_parallel_read_threads=8;
|
|
ALTER TABLE t1 DROP PRIMARY KEY; ALTER TABLE t1 ADD PRIMARY KEY(a);
|
|
CHECK TABLE t1;
|
|
|
|
SET xengine_parallel_read_threads=16;
|
|
ALTER TABLE t1 DROP PRIMARY KEY; ALTER TABLE t1 ADD PRIMARY KEY(a);
|
|
CHECK TABLE t1;
|
|
|
|
SET xengine_parallel_read_threads=32;
|
|
ALTER TABLE t1 DROP PRIMARY KEY; ALTER TABLE t1 ADD PRIMARY KEY(a);
|
|
CHECK TABLE t1;
|
|
|
|
SET xengine_parallel_read_threads=64;
|
|
ALTER TABLE t1 DROP PRIMARY KEY; ALTER TABLE t1 ADD PRIMARY KEY(a);
|
|
CHECK TABLE t1;
|
|
|
|
DROP TABLE t1;
|
|
|
|
--echo ###################################################################
|
|
--echo # case 4: test for thread from 1 to 64 for data size 10
|
|
--echo ###################################################################
|
|
CREATE TABLE t1(a INT NOT NULL, b TEXT(10485760), PRIMARY KEY(a))ENGINE=XENGINE;
|
|
SHOW CREATE TABLE t1;
|
|
let $i=0;
|
|
--disable_query_log
|
|
while($i < 10) {
|
|
# each record is about 128 bytes
|
|
--eval INSERT INTO t1 VALUES($i, repeat('1', 128));
|
|
inc $i;
|
|
}
|
|
--enable_query_log
|
|
SET xengine_parallel_read_threads=1;
|
|
ALTER TABLE t1 DROP PRIMARY KEY; ALTER TABLE t1 ADD PRIMARY KEY(a);
|
|
CHECK TABLE t1;
|
|
|
|
SET xengine_parallel_read_threads=2;
|
|
ALTER TABLE t1 DROP PRIMARY KEY; ALTER TABLE t1 ADD PRIMARY KEY(a);
|
|
CHECK TABLE t1;
|
|
|
|
SET xengine_parallel_read_threads=4;
|
|
ALTER TABLE t1 DROP PRIMARY KEY; ALTER TABLE t1 ADD PRIMARY KEY(a);
|
|
CHECK TABLE t1;
|
|
|
|
SET xengine_parallel_read_threads=8;
|
|
ALTER TABLE t1 DROP PRIMARY KEY; ALTER TABLE t1 ADD PRIMARY KEY(a);
|
|
CHECK TABLE t1;
|
|
|
|
SET xengine_parallel_read_threads=16;
|
|
ALTER TABLE t1 DROP PRIMARY KEY; ALTER TABLE t1 ADD PRIMARY KEY(a);
|
|
CHECK TABLE t1;
|
|
|
|
SET xengine_parallel_read_threads=32;
|
|
ALTER TABLE t1 DROP PRIMARY KEY; ALTER TABLE t1 ADD PRIMARY KEY(a);
|
|
CHECK TABLE t1;
|
|
|
|
SET xengine_parallel_read_threads=64;
|
|
ALTER TABLE t1 DROP PRIMARY KEY; ALTER TABLE t1 ADD PRIMARY KEY(a);
|
|
CHECK TABLE t1;
|
|
|
|
DROP TABLE t1;
|
|
|
|
--echo ###################################################################
|
|
--echo # case 5: index is already sorted
|
|
--echo ###################################################################
|
|
CREATE TABLE t1(a INT NOT NULL, b TEXT(10485760), PRIMARY KEY(a))ENGINE=XENGINE;
|
|
SHOW CREATE TABLE t1;
|
|
let $i=0;
|
|
--disable_query_log
|
|
while($i < 1000) {
|
|
# each record is about 128 bytes
|
|
--eval INSERT INTO t1 VALUES($i, repeat('1', 128));
|
|
inc $i;
|
|
}
|
|
--enable_query_log
|
|
|
|
SET xengine_parallel_read_threads=4;
|
|
ALTER TABLE t1 ADD INDEX a_1(a);
|
|
CHECK TABLE t1;
|
|
DROP TABLE t1;
|
|
|
|
SET @@global.xengine_parallel_read_threads=@saved_parallel_read_threads;
|
|
SET @@global.xengine_sort_buffer_size=@saved_sort_buffer_size;
|
|
SELECT @@global.xengine_parallel_read_threads;
|
|
SELECT @@global.xengine_sort_buffer_size;
|
|
|