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

127 lines
3.8 KiB
Plaintext

--source suite/xengine/include/have_xengine.inc
--disable_warnings
DROP TABLE IF EXISTS test_commit_middle;
--enable_warnings
CREATE TABLE test_commit_middle (id INT AUTO_INCREMENT PRIMARY KEY, c1 INT, index idx(c1)) ENGINE=xengine;
#set xengine_commit_in_the_middle=1;
#SET @save_xengine_bulk_load_size= @@xengine_bulk_load_size;
#set xengine_bulk_load_size = 100;
delimiter $$;
CREATE PROCEDURE fill_table(cnt int)
begin
declare i int default 0;
repeat insert into test_commit_middle(c1) values(i);
set i=i+1;
until i > cnt
end repeat;
end$$
delimiter ;$$
#for delete write_batch itertor is after baseIterator
call fill_table(5000);
begin;
insert into test_commit_middle values(10001,10001),(10002,10002),(10003,10003);
delete from test_commit_middle where id>0;
commit;
select * from test_commit_middle;
#for delete write_batch itertor is before baseIterator
delete from test_commit_middle;
call fill_table(5000);
begin;
insert into test_commit_middle values(1,1),(2,2),(3,3);
delete from test_commit_middle where id>0;
commit;
select * from test_commit_middle;
#for update write_batch itertor is after baseIterator
delete from test_commit_middle;
call fill_table(5000);
begin;
insert into test_commit_middle values(30001,30001),(30002,30002),(30003,30003);
update test_commit_middle set c1=c1+1;
commit;
select count(*) from test_commit_middle;
# for update write_batch itertor is before baseIterator
delete from test_commit_middle;
call fill_table(5000);
begin;
insert into test_commit_middle values(1,1),(2,2),(3,3);
update test_commit_middle set c1=c1+1;
commit;
select count(*) from test_commit_middle;
#for insert write_batch itertor is after baseIterator
delete from test_commit_middle;
call fill_table(5000);
begin;
insert into test_commit_middle values(50001,50001),(50002,50002),(50003,50003);
insert into test_commit_middle(c1) select c1 from test_commit_middle;
commit;
#for insert write_batch itertor is before baseIterator
delete from test_commit_middle;
call fill_table(5000);
begin;
insert into test_commit_middle values(1,1),(2,2),(3,3);
insert into test_commit_middle(c1) select c1 from test_commit_middle;
commit;
#for delete from two tables
CREATE TABLE t1 (id1 bigint(20),id2 bigint(20),id3 bigint(20),PRIMARY KEY (id1, id2, id3)) ENGINE=xengine;
CREATE TABLE t2 (id1 bigint(20),id2 bigint(20),PRIMARY KEY (id1, id2)) ENGINE=xengine;
#set xengine_commit_in_the_middle=1;
#set xengine_bulk_load_size = 100;
let $1 = 10000;
--disable_query_log
while ($1)
{
eval insert into t1 (id1, id2, id3) values (0,$1,0);
eval insert into t2 (id1, id2) values (0,$1);
dec $1;
}
--enable_query_log
DELETE t2, t1 FROM t2 LEFT JOIN t1 ON t2.id2 = t1.id2 AND t2.id1 = t1.id1 WHERE t2.id1 = 0;
select count(*) from t1;
select count(*) from t2;
#for commit_in_middle, get rows from write_batch
create table test_version (id int primary key auto_increment,seq_id int, gmt_create datetime,gmt_modified datetime,version int,status varchar(20));
insert into test_version (seq_id, gmt_create,gmt_modified,version,status) values (1111,NOW(),NOW(),0,'normal');
select id,seq_id,version,status from test_version;
set autocommit=off;
begin;
select id from test_version where seq_id = 1111 and status = 'normal';
update test_version set status = 'deleted', version = version + 1, gmt_modified = now() where id = 1 and version = 0;
insert into test_version (seq_id, gmt_create,gmt_modified,version,status) values (1111,NOW(),NOW(),0,'normal');
select id,seq_id,version,status from test_version;
commit;
select id,seq_id,version,status from test_version;
# Cleanup
#SET xengine_bulk_load_size= @save_xengine_bulk_load_size;
#SET xengine_commit_in_the_middle=0;
DROP TABLE test_commit_middle;
DROP PROCEDURE fill_table;
drop table t1;
drop table t2;
drop table test_version;
--source suite/xengine/include/check_xengine_log_error.inc