polardbxengine/mysql-test/suite/xengine/t/parallel_ddl.test

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;