mark some file to been opensource for ce-farm
This commit is contained in:
@ -0,0 +1,119 @@
|
||||
# owner: gengli.wzy
|
||||
# owner group: transaction
|
||||
# description: 本case是为了测试在含未提交事务的状态下,含多次dml操作下,多次minor merge的正确性
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
let $__timeout_def__ = 600 * 1000 * 1000;
|
||||
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connection conn1;
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
sleep 2;
|
||||
|
||||
connection conn1;
|
||||
alter system set minor_compact_trigger = 10;
|
||||
|
||||
connection conn1;
|
||||
--disable_warnings
|
||||
drop table if exists test_big_uncommitted_trans_t;
|
||||
--enable_warnings
|
||||
|
||||
connection conn1;
|
||||
create table test_big_uncommitted_trans_t(i int primary key, c1 char(30), c256 char(255), dt datetime(6), d datetime(6));
|
||||
let $__freeze_table_name__ = 'test_big_uncommitted_trans_t';
|
||||
|
||||
connection conn0;
|
||||
let $__tenant_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ tenant_id from oceanbase.__all_virtual_table where table_name= $__freeze_table_name__, tenant_id, 1);
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= $__freeze_table_name__, table_id, 1);
|
||||
let $__svr_cnt__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ count(*) as c from oceanbase.__all_server, c, 1);
|
||||
|
||||
|
||||
connection conn1;
|
||||
#insert
|
||||
--disable_query_log
|
||||
begin;
|
||||
let $i=0;
|
||||
while($i < 3000)
|
||||
{
|
||||
eval insert into test_big_uncommitted_trans_t(i,c1,c256,dt,d) values($i,'1','$i','2012-10-10 12:00:00','2012-10-10');
|
||||
inc $i;
|
||||
}
|
||||
|
||||
#replace
|
||||
let $i=3000;
|
||||
while($i < 6000)
|
||||
{
|
||||
eval replace into test_big_uncommitted_trans_t(i,c1,c256,dt,d) values($i,'1','$i+3000','2012-10-10 12:00:00','2012-10-10');
|
||||
inc $i;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
connection conn1;
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
#select in other connection(EMPTY)
|
||||
connection conn2;
|
||||
select * from test_big_uncommitted_trans_t where i = 999;
|
||||
|
||||
connection conn1;
|
||||
--disable_query_log
|
||||
#update
|
||||
let $i=0;
|
||||
while($i < 3000)
|
||||
{
|
||||
eval update test_big_uncommitted_trans_t set c1='update_$i' where i=$i;
|
||||
inc $i;
|
||||
}
|
||||
--enable_query_log
|
||||
commit;
|
||||
|
||||
connection conn2;
|
||||
select * from test_big_uncommitted_trans_t where i = 1999;
|
||||
|
||||
connection conn1;
|
||||
select count(*) from test_big_uncommitted_trans_t;
|
||||
|
||||
connection conn2;
|
||||
select * from test_big_uncommitted_trans_t where i = 999;
|
||||
|
||||
connection conn1;
|
||||
#delete
|
||||
begin;
|
||||
--disable_query_log
|
||||
let $i=0;
|
||||
while($i < 3000)
|
||||
{
|
||||
eval delete from test_big_uncommitted_trans_t where i=$i;
|
||||
inc $i;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
# test mini minor merge
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
let $__now_time__ = query_get_value(select now() as c, c, 1);
|
||||
alter system set minor_compact_trigger = 1;
|
||||
|
||||
--source mysql_test/include/wait_mini_minor_merge_for_table.inc
|
||||
|
||||
connection conn1;
|
||||
commit;
|
||||
|
||||
connection conn2;
|
||||
select * from test_big_uncommitted_trans_t where i = 999;
|
||||
|
||||
drop table test_big_uncommitted_trans_t;
|
||||
alter system set minor_compact_trigger = 2;
|
||||
@ -0,0 +1,144 @@
|
||||
# owner: gengli.wzy
|
||||
# owner group: storage
|
||||
# description: for minor merge with uncommitted trx
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
let $__timeout_def__ = 60 * 1000 * 1000;
|
||||
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connection conn1;
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
sleep 2;
|
||||
|
||||
|
||||
connection conn1;
|
||||
alter system set minor_compact_trigger = 10;
|
||||
sleep 2;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists test_commit_after_minor_merge_t;
|
||||
--enable_warnings
|
||||
|
||||
create table test_commit_after_minor_merge_t(c1 int primary key, c2 int);
|
||||
let $__freeze_table_name__ = 'test_commit_after_minor_merge_t';
|
||||
|
||||
connection conn0;
|
||||
let $__tenant_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ tenant_id from oceanbase.__all_virtual_table where table_name= 'test_commit_after_minor_merge_t', tenant_id, 1);
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= 'test_commit_after_minor_merge_t', table_id, 1);
|
||||
|
||||
# prepare data, minor merge with dirty trx but committed in sstable
|
||||
connection conn1;
|
||||
let $__tablet_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ tablet_id from oceanbase.__all_tablet_to_ls where table_id = $__table_id__, tablet_id, 1);
|
||||
|
||||
insert into test_commit_after_minor_merge_t values (0,0);
|
||||
begin;
|
||||
update test_commit_after_minor_merge_t set c2 = 10 where c1 = 0;
|
||||
insert into test_commit_after_minor_merge_t values (3,3);
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
commit;
|
||||
select * from test_commit_after_minor_merge_t;
|
||||
|
||||
let $count = query_get_value(select count(1) as c from oceanbase.__all_virtual_table_mgr where tablet_id = $__tablet_id__ and size > 0 group by svr_port order by svr_port limit 1, c, 1);
|
||||
# one minor sstable
|
||||
echo $count;
|
||||
|
||||
|
||||
# commit after minor merged
|
||||
connection conn1;
|
||||
insert into test_commit_after_minor_merge_t values (4,4);
|
||||
begin;
|
||||
insert into test_commit_after_minor_merge_t values (1,1);
|
||||
insert into test_commit_after_minor_merge_t values (2,2);
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
commit;
|
||||
|
||||
let $count = query_get_value(select count(1) as c from oceanbase.__all_virtual_table_mgr where tablet_id = $__tablet_id__ and size > 0 group by svr_port order by svr_port limit 1, c, 1);
|
||||
# two minor sstable
|
||||
echo $count;
|
||||
|
||||
connection conn1;
|
||||
select * from test_commit_after_minor_merge_t;
|
||||
|
||||
# major freeze, check if uncommitted row is correctly merged into major sstable
|
||||
connection conn0;
|
||||
alter system major freeze tenant = sys;
|
||||
alter system major freeze tenant = all_user;
|
||||
alter system major freeze tenant = all_meta;
|
||||
|
||||
--source mysql_test/include/wait_daily_merge.inc
|
||||
|
||||
connection conn1;
|
||||
select * from test_commit_after_minor_merge_t;
|
||||
|
||||
# long trx span two minor freeze and major freeze
|
||||
connection conn1;
|
||||
insert into test_commit_after_minor_merge_t values (5,5);
|
||||
insert into test_commit_after_minor_merge_t values (6,6);
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
delete from test_commit_after_minor_merge_t where c1 <= 2;
|
||||
|
||||
connection conn0;
|
||||
alter system major freeze tenant = sys;
|
||||
alter system major freeze tenant = all_user;
|
||||
alter system major freeze tenant = all_meta;
|
||||
let $major_snapshot = query_get_value(select frozen_scn from __all_virtual_freeze_info order by frozen_scn desc limit 1, frozen_scn, 1);
|
||||
--source mysql_test/include/wait_daily_merge.inc
|
||||
|
||||
connection conn1;
|
||||
select * from test_commit_after_minor_merge_t;
|
||||
|
||||
# long trx rollback
|
||||
connection conn1;
|
||||
begin;
|
||||
insert into test_commit_after_minor_merge_t values (7,7);
|
||||
update test_commit_after_minor_merge_t set c2 = 60 where c1 = 6;
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
delete from test_commit_after_minor_merge_t where c1 = 5;
|
||||
|
||||
connection conn1;
|
||||
let $__now_time__ = query_get_value(select now() as c, c, 1);
|
||||
alter system set minor_compact_trigger = 1;
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
select * from test_commit_after_minor_merge_t;
|
||||
rollback;
|
||||
select * from test_commit_after_minor_merge_t;
|
||||
|
||||
--source mysql_test/include/wait_mini_minor_merge_for_table.inc
|
||||
|
||||
connection conn1;
|
||||
select * from test_commit_after_minor_merge_t;
|
||||
|
||||
# minor freeze again, new mini sstable should be empty since rollbacked data will be recycled
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
select * from test_commit_after_minor_merge_t;
|
||||
|
||||
drop table test_commit_after_minor_merge_t;
|
||||
alter system set minor_compact_trigger = 2;
|
||||
@ -0,0 +1,143 @@
|
||||
# owner: gengli.wzy
|
||||
# owner group: transaction
|
||||
# description: 本case是为了测试在含未提交事务的状态下,执行delte操作下,多次minor merge的正确性
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
let $__timeout_def__ = 60 * 1000 * 1000;
|
||||
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connection conn1;
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
sleep 2;
|
||||
|
||||
connection conn1;
|
||||
alter system set minor_compact_trigger = 10;
|
||||
|
||||
connection conn1;
|
||||
--disable_warnings
|
||||
drop table if exists test_delete_uncommitted_data;
|
||||
--enable_warnings
|
||||
|
||||
create table test_delete_uncommitted_data(num int, str varchar(50), tag int);
|
||||
let $__freeze_table_name__ = 'test_delete_uncommitted_data';
|
||||
|
||||
connection conn0;
|
||||
let $__tenant_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ tenant_id from oceanbase.__all_virtual_table where table_name= 'test_delete_uncommitted_data', tenant_id, 1);
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= 'test_delete_uncommitted_data', table_id, 1);
|
||||
let $__svr_cnt__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ count(*) as c from oceanbase.__all_server, c, 1);
|
||||
|
||||
connection conn1;
|
||||
begin;
|
||||
#事务开始 插入数据
|
||||
insert into test_delete_uncommitted_data value(100, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(99, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(98, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(97, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(96, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(95, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(94, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(93, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(92, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(91, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(90, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(89, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(88, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(87, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(86, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(85, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(84, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(83, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(82, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(81, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(80, 'Hello OceanBase & Happy New Year', 1);
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
#删除数据 再在本事务中查询
|
||||
delete from test_delete_uncommitted_data where tag = 1;
|
||||
select * from test_delete_uncommitted_data;
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn2;
|
||||
#不同事务查询sstable未提交数据
|
||||
select * from test_delete_uncommitted_data;
|
||||
|
||||
connection conn1;
|
||||
insert into test_delete_uncommitted_data value(100, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(99, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(98, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(97, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(96, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(95, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(94, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(93, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(92, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(91, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(90, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(89, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(88, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(87, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(86, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(85, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(84, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(83, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(82, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(81, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(80, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(50, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(49, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(48, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(47, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(46, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(45, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(44, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(43, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(42, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(41, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_delete_uncommitted_data value(40, 'Hello OceanBase & Happy New Year', 1);
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
# test mini minor merge
|
||||
let $__now_time__ = query_get_value(select now() as c, c, 1);
|
||||
alter system set minor_compact_trigger = 1;
|
||||
--source mysql_test/include/wait_mini_minor_merge_for_table.inc
|
||||
|
||||
connection conn2;
|
||||
# 不同事务查询sstable未提交数据
|
||||
select * from test_delete_uncommitted_data;
|
||||
|
||||
connection conn1;
|
||||
#同一事务查询sstable未提交数据
|
||||
select * from test_delete_uncommitted_data;
|
||||
|
||||
connection conn1;
|
||||
update test_delete_uncommitted_data set tag = num + tag where num % 2 = 1;
|
||||
delete from test_delete_uncommitted_data where tag != 1;
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
commit;
|
||||
|
||||
#不同查sstable未提交数据(COMMIT)
|
||||
connection conn2;
|
||||
select * from test_delete_uncommitted_data;
|
||||
select count(*) from test_delete_uncommitted_data;
|
||||
|
||||
drop table test_delete_uncommitted_data;
|
||||
alter system set minor_compact_trigger = 2;
|
||||
@ -0,0 +1,113 @@
|
||||
# owner: gengli.wzy
|
||||
# owner group: transaction
|
||||
# description: for minor merge with uncommitted trx
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
let $__timeout_def__ = 60 * 1000 * 1000;
|
||||
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connection conn1;
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
sleep 2;
|
||||
|
||||
connection conn0;
|
||||
let $__tenant_id__ = query_get_value(select tenant_id from oceanbase.__all_tenant where tenant_name = 'mysql', tenant_id, 1);
|
||||
|
||||
connection conn1;
|
||||
--disable_warnings
|
||||
drop table if exists test_uncommitted_trx_minor_merge;
|
||||
--enable_warnings
|
||||
|
||||
create table test_uncommitted_trx_minor_merge(c1 int primary key, c2 int);
|
||||
let $__freeze_table_name__ = 'test_uncommitted_trx_minor_merge';
|
||||
|
||||
insert into test_uncommitted_trx_minor_merge values (1,1);
|
||||
|
||||
connection conn0;
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= 'test_uncommitted_trx_minor_merge', table_id, 1);
|
||||
|
||||
|
||||
connection conn1;
|
||||
let $__tablet_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ tablet_id from oceanbase.__all_tablet_to_ls where table_id = $__table_id__, tablet_id, 1);
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
#connection conn1;
|
||||
#let $count = query_get_value(select count(1) as c from oceanbase.__all_virtual_table_mgr where tablet_id = $__tablet_id__ and tenant_id = $__tenant_id__ and table_type = 12 group by svr_port, c, 1);
|
||||
#echo $count;
|
||||
|
||||
connection conn1;
|
||||
select * from test_uncommitted_trx_minor_merge;
|
||||
|
||||
insert into test_uncommitted_trx_minor_merge values (2,2);
|
||||
# dirty trans, but committed when minor merge
|
||||
begin;
|
||||
insert into test_uncommitted_trx_minor_merge values (3,3);
|
||||
update test_uncommitted_trx_minor_merge set c2 = 10 where c1 = 1;
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
commit;
|
||||
select * from test_uncommitted_trx_minor_merge;
|
||||
|
||||
let $count = query_get_value(select count(1) as c from oceanbase.__all_virtual_table_mgr where tablet_id = $__tablet_id__ and tenant_id = $__tenant_id__ and table_type = 12 and size > 0 group by svr_port, c, 1);
|
||||
echo $count;
|
||||
|
||||
connection conn1;
|
||||
|
||||
begin;
|
||||
insert into test_uncommitted_trx_minor_merge values (4,4);
|
||||
|
||||
# this minor sstable should be removed after major merge
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
commit;
|
||||
|
||||
let $__now_time__ = query_get_value(select now() as c, c, 1);
|
||||
let $__freeze_tenant_name__ = 'mysql'
|
||||
--source mysql_test/include/major_freeze_tenant_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
select * from test_uncommitted_trx_minor_merge;
|
||||
|
||||
# first minor freeze with dirty trans
|
||||
# then minor freeze an empty memtable, but the corresponding minor sstable should contain data from last complement minor sstable
|
||||
connection conn1;
|
||||
begin;
|
||||
insert into test_uncommitted_trx_minor_merge values (5,5);
|
||||
update test_uncommitted_trx_minor_merge set c2 = 100 where c1 = 2;
|
||||
alter system set undo_retention = 0;
|
||||
sleep 5;
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
commit;
|
||||
select * from test_uncommitted_trx_minor_merge;
|
||||
|
||||
connection conn0;
|
||||
#let $count = query_get_value(select count(1) as c from oceanbase.__all_virtual_table_mgr where tablet_id = $__tablet_id__ and tenant_id = $__tenant_id__ and table_type = 12 and size > 0 group by svr_port order by c desc limit 1, c, 1);
|
||||
# should be 1
|
||||
#echo $count;
|
||||
#eval select * from oceanbase.__all_virtual_table_mgr where tablet_id = $__tablet_id__ and tenant_id = $__tenant_id__;
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
select * from test_uncommitted_trx_minor_merge;
|
||||
alter system set undo_retention = 1800;
|
||||
drop table test_uncommitted_trx_minor_merge;
|
||||
@ -0,0 +1,56 @@
|
||||
# owner: gengli.wzy
|
||||
# owner group: transaction
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
let $__timeout_def__ = 60 * 1000 * 1000;
|
||||
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connection conn1;
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn3,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
sleep 2;
|
||||
|
||||
connection conn1;
|
||||
--disable_warnings
|
||||
drop table if exists test_get_uncommitted_row_with_fuse_row_t;
|
||||
--enable_warnings
|
||||
|
||||
create table test_get_uncommitted_row_with_fuse_row_t(a int primary key, b int, unique key u_idx(b));
|
||||
let $__freeze_table_name__ = 'test_get_uncommitted_row_with_fuse_row_t';
|
||||
|
||||
insert into test_get_uncommitted_row_with_fuse_row_t (a, b) values (1, 10), (2, 20), (3, 30);
|
||||
sleep 5;
|
||||
|
||||
begin;
|
||||
select * from test_get_uncommitted_row_with_fuse_row_t where a = 2 for update;
|
||||
update test_get_uncommitted_row_with_fuse_row_t set b = b + 1 where a = 2;
|
||||
|
||||
connection conn0;
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= 'test_get_uncommitted_row_with_fuse_row_t', table_id, 1);
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
--error 1062
|
||||
update test_get_uncommitted_row_with_fuse_row_t set b = 30 where a = 2;
|
||||
|
||||
connection conn2;
|
||||
select * from test_get_uncommitted_row_with_fuse_row_t where a = 2;
|
||||
|
||||
connection conn1;
|
||||
commit;
|
||||
|
||||
connection conn3;
|
||||
select * from test_get_uncommitted_row_with_fuse_row_t where a = 2;
|
||||
|
||||
|
||||
drop table test_get_uncommitted_row_with_fuse_row_t;
|
||||
@ -0,0 +1,78 @@
|
||||
# owner: gengli.wzy
|
||||
# owner group: transaction
|
||||
# description: 本case是为了测试查询sstable上未提交的数据
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
let $__timeout_def__ = 60 * 1000 * 1000;
|
||||
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connection conn1;
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
eval set SESSION ob_query_timeout = 1 * 1000 * 1000;
|
||||
eval set SESSION ob_trx_timeout = 1 * 1000 * 1000;
|
||||
eval set SESSION ob_trx_idle_timeout = 1 * 1000 * 1000;
|
||||
sleep 2;
|
||||
|
||||
connection conn1;
|
||||
--disable_warnings
|
||||
drop table if exists test_lock_row_in_minor_t;
|
||||
--enable_warnings
|
||||
|
||||
create table test_lock_row_in_minor_t(a int primary key, b int);
|
||||
let $__freeze_table_name__ = 'test_lock_row_in_minor_t';
|
||||
insert into test_lock_row_in_minor_t value(1, 1);
|
||||
alter system set minor_compact_trigger = 10;
|
||||
|
||||
# 测试普通标记脏事务
|
||||
connection conn1;
|
||||
begin;
|
||||
select * from test_lock_row_in_minor_t where a = 1 for update;
|
||||
|
||||
connection conn0;
|
||||
let $__tenant_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ tenant_id from oceanbase.__all_virtual_table where table_name= 'test_lock_row_in_minor_t', tenant_id, 1);
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= 'test_lock_row_in_minor_t', table_id, 1);
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
insert into test_lock_row_in_minor_t value(2, 2);
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
let $__now_time__ = query_get_value(select now() as c, c, 1);
|
||||
alter system set minor_compact_trigger = 1;
|
||||
--source mysql_test/include/wait_mini_minor_merge_for_table.inc
|
||||
|
||||
connection conn2;
|
||||
# 不同事务更新sstable未提交数据
|
||||
--error 1205
|
||||
update test_lock_row_in_minor_t set b = 10 where a = 1;
|
||||
select * from test_lock_row_in_minor_t;
|
||||
|
||||
connection conn1;
|
||||
#同一事务更新sstable未提交数据
|
||||
update test_lock_row_in_minor_t set b = 10 where a = 1;
|
||||
|
||||
select * from test_lock_row_in_minor_t;
|
||||
|
||||
commit;
|
||||
#查sstable未提交数据,但事务已提交
|
||||
update test_lock_row_in_minor_t set b = 100 where a = 1;
|
||||
select * from test_lock_row_in_minor_t;
|
||||
|
||||
connection conn2;
|
||||
begin;
|
||||
update test_lock_row_in_minor_t set b = 200 where a = 1;
|
||||
select * from test_lock_row_in_minor_t;
|
||||
|
||||
drop table test_lock_row_in_minor_t;
|
||||
alter system set minor_compact_trigger = 2;
|
||||
@ -0,0 +1,69 @@
|
||||
# owner: gengli.wzy
|
||||
# owner group: transaction
|
||||
# description: 本case是为了测试查询sstable上未提交的数据
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
connection conn0;
|
||||
|
||||
let $__timeout_def__ = 60 * 1000 * 1000;
|
||||
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connection conn1;
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
sleep 2;
|
||||
|
||||
connection conn1;
|
||||
--disable_warnings
|
||||
drop table if exists test_lock_uncommitted_data_t;
|
||||
--enable_warnings
|
||||
|
||||
create table test_lock_uncommitted_data_t(a int primary key, b int);
|
||||
let $__freeze_table_name__ = 'test_lock_uncommitted_data_t';
|
||||
|
||||
# 测试普通标记脏事务
|
||||
begin;
|
||||
insert into test_lock_uncommitted_data_t value(1, 1);
|
||||
insert into test_lock_uncommitted_data_t value(2, 2);
|
||||
insert into test_lock_uncommitted_data_t value(3, 3);
|
||||
insert into test_lock_uncommitted_data_t value(4, 4);
|
||||
insert into test_lock_uncommitted_data_t value(5, 5);
|
||||
insert into test_lock_uncommitted_data_t value(6, 6);
|
||||
|
||||
|
||||
connection conn0;
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= 'test_lock_uncommitted_data_t', table_id, 1);
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn2;
|
||||
# 不同事务更新sstable未提交数据
|
||||
update test_lock_uncommitted_data_t set b = 10 where a = 3;
|
||||
select * from test_lock_uncommitted_data_t;
|
||||
|
||||
connection conn1;
|
||||
#同一事务更新sstable未提交数据
|
||||
update test_lock_uncommitted_data_t set b = 10 where a = 3;
|
||||
|
||||
select * from test_lock_uncommitted_data_t;
|
||||
|
||||
commit;
|
||||
#查sstable未提交数据,但事务已提交
|
||||
update test_lock_uncommitted_data_t set b = 100 where a = 3;
|
||||
|
||||
connection conn2;
|
||||
begin;
|
||||
update test_lock_uncommitted_data_t set b = 200 where a = 3;
|
||||
|
||||
drop table test_lock_uncommitted_data_t;
|
||||
@ -0,0 +1,67 @@
|
||||
# owner: gengli.wzy
|
||||
# owner group: transaction
|
||||
# description: 本case是为了测试在Mini Merge时出现连续两行的sql_sequence相等
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
set GLOBAL ob_query_timeout = 1000000000000;
|
||||
set GLOBAL ob_trx_timeout = 10000000000000;
|
||||
set GLOBAL ob_trx_idle_timeout = 10000000000;
|
||||
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
connection conn1;
|
||||
alter system set minor_compact_trigger = 10;
|
||||
sleep 2;
|
||||
|
||||
connection conn1;
|
||||
--disable_warnings
|
||||
drop table if exists same_sql_sequence;
|
||||
--enable_warnings
|
||||
|
||||
#建表
|
||||
create table same_sql_sequence(num int primary key, str varchar(50), tag int);
|
||||
create index index_num_tag on same_sql_sequence(tag);
|
||||
|
||||
connection conn0;
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= 't1', table_id, 1);
|
||||
|
||||
connection conn1;
|
||||
#事务开始 插入数据
|
||||
begin;
|
||||
--disable_query_log
|
||||
|
||||
let $i=0;
|
||||
while($i < 3)
|
||||
{
|
||||
eval insert into same_sql_sequence values($i + 1000, 'Hello OceanBase & Happy New Year', 0);
|
||||
inc $i;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn1;
|
||||
update same_sql_sequence set tag = 0, str = 'Hello OceanBase';
|
||||
sleep 10;
|
||||
|
||||
# test minor merge
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn1;
|
||||
select /*+ index(same_sql_sequence index_num_tag) */ *from same_sql_sequence where tag = 0;
|
||||
commit;
|
||||
|
||||
drop table same_sql_sequence;
|
||||
alter system set minor_compact_trigger = 2;
|
||||
@ -0,0 +1,110 @@
|
||||
# owner: gengli.wzy
|
||||
# owner group: transaction
|
||||
# description: 本case是为了测试在含未提交事务的状态下,含多次dml操作下,多次minor merge的正确性
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
let $__timeout_def__ = 600 * 1000 * 1000;
|
||||
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connection conn1;
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
sleep 2;
|
||||
|
||||
connection conn1;
|
||||
alter system set minor_compact_trigger = 10;
|
||||
|
||||
connection conn1;
|
||||
--disable_query_log
|
||||
--disable_warnings
|
||||
drop table if exists test_mix_dml_table;
|
||||
--enable_warnings
|
||||
create table test_mix_dml_table(i1 int, v2 varchar(80), i3 char(20), i4 float, d4 datetime(6),i5 decimal(5,3), primary key(i1));
|
||||
let $__freeze_table_name__ = 'test_mix_dml_table';
|
||||
--enable_query_log
|
||||
|
||||
connection conn0;
|
||||
let $__tenant_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ tenant_id from oceanbase.__all_virtual_table where table_name= 'test_mix_dml_table', tenant_id, 1);
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= 'test_mix_dml_table', table_id, 1);
|
||||
|
||||
connection conn1;
|
||||
begin;
|
||||
--disable_query_log
|
||||
let $cnt=2000;
|
||||
while ($cnt)
|
||||
{
|
||||
eval insert into test_mix_dml_table values($cnt, 'now, come on', 'wukalaka bianshen', 25 * $cnt, '2014-02-04 12:00:00', -2.232);
|
||||
dec $cnt;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
update test_mix_dml_table set v2 = 'QQQQQQQQQQQQQQQQQQQQQQQQQQ';
|
||||
select count(*) from test_mix_dml_table where v2 = 'QQQQQQQQQQQQQQQQQQQQQQQQQQ';
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn2;
|
||||
#BU同一事务查询sstable未提交数据
|
||||
select * from test_mix_dml_table;
|
||||
|
||||
connection conn1;
|
||||
--disable_query_log
|
||||
delete from test_mix_dml_table where i1 % 2 = 0;
|
||||
--enable_query_log
|
||||
|
||||
# test mini minor merge
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
let $__now_time__ = query_get_value(select now() as c, c, 1);
|
||||
alter system set minor_compact_trigger = 1;
|
||||
--source mysql_test/include/wait_mini_minor_merge_for_table.inc
|
||||
|
||||
connection conn2;
|
||||
# 不同事务查询sstable未提交数据
|
||||
select * from test_mix_dml_table;
|
||||
|
||||
connection conn1;
|
||||
#同一事务查询sstable未提交数据
|
||||
let $cnt = 5;
|
||||
while ($cnt)
|
||||
{
|
||||
eval select count(*) from test_mix_dml_table;
|
||||
dec $cnt;
|
||||
}
|
||||
|
||||
--disable_query_log
|
||||
let $cnt2 = 3;
|
||||
while ($cnt2)
|
||||
{
|
||||
connection conn1;
|
||||
eval update test_mix_dml_table set i4 = 2 * i4;
|
||||
dec $cnt2;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
commit;
|
||||
|
||||
connection conn2;
|
||||
eval select count(*) from test_mix_dml_table where i4 = 25 * i1 * power(2, 3) and v2 != 'QQQQQQQQQQQQQQQQQQQQQQQQQQ';
|
||||
--disable_query_log
|
||||
drop table test_mix_dml_table;
|
||||
|
||||
connection conn1;
|
||||
alter system set minor_compact_trigger = 2;
|
||||
@ -0,0 +1,67 @@
|
||||
# owner: gengli.wzy
|
||||
# owner group: transaction
|
||||
# description: 本case是为了测试查询sstable上未提交的数据 multiget
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
let $__timeout_def__ = 60 * 1000 * 1000;
|
||||
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connection conn1;
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
sleep 2;
|
||||
|
||||
connection conn1;
|
||||
--disable_warnings
|
||||
drop table if exists test_multi_get_uncommitted_row_t;
|
||||
--enable_warnings
|
||||
|
||||
create table test_multi_get_uncommitted_row_t(a int primary key, b int, key ib(b));
|
||||
let $__freeze_table_name__ = 'test_multi_get_uncommitted_row_t';
|
||||
|
||||
# 测试普通标记脏事务
|
||||
begin;
|
||||
insert into test_multi_get_uncommitted_row_t value(1, 1);
|
||||
insert into test_multi_get_uncommitted_row_t value(2, 2);
|
||||
|
||||
connection conn0;
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= 'test_multi_get_uncommitted_row_t', table_id, 1);
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn2;
|
||||
# 不同事务查询sstable未提交数据
|
||||
select * from test_multi_get_uncommitted_row_t where a in (1,2);
|
||||
|
||||
|
||||
connection conn1;
|
||||
#同一事务查询sstable未提交数据
|
||||
select * from test_multi_get_uncommitted_row_t where a in (1, 2);
|
||||
|
||||
# 未提交的事务不能进fuse row cache
|
||||
connection conn2;
|
||||
select * from test_multi_get_uncommitted_row_t where a in (1,2);
|
||||
|
||||
connection conn1;
|
||||
update test_multi_get_uncommitted_row_t set b = 10 where a = 1;
|
||||
|
||||
commit;
|
||||
#查sstable未提交数据,但事务已提交
|
||||
select * from test_multi_get_uncommitted_row_t where a in (1,2);
|
||||
|
||||
connection conn2;
|
||||
|
||||
select * from test_multi_get_uncommitted_row_t where a in (1,2);
|
||||
|
||||
drop table test_multi_get_uncommitted_row_t;
|
||||
@ -0,0 +1,107 @@
|
||||
# owner: gengli.wzy
|
||||
# owner group: transaction
|
||||
# description: 本case是为了测试在含未提交事务的状态下,多次minor merge的正确性
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
let $__timeout_def__ = 600 * 1000 * 1000;
|
||||
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connection conn1;
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
sleep 2;
|
||||
|
||||
connection conn1;
|
||||
alter system set minor_compact_trigger = 10;
|
||||
sleep 2;
|
||||
|
||||
connection conn1;
|
||||
--disable_warnings
|
||||
drop table if exists test_multi_minor_merge_t;
|
||||
--enable_warnings
|
||||
|
||||
create table test_multi_minor_merge_t(num int, str varchar(50), tag int);
|
||||
let $__freeze_table_name__ = 'test_multi_minor_merge_t';
|
||||
|
||||
connection conn0;
|
||||
let $__tenant_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ tenant_id from oceanbase.__all_virtual_table where table_name= $__freeze_table_name__, tenant_id, 1);
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= $__freeze_table_name__, table_id, 1);
|
||||
let $__svr_cnt__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ count(*) as c from oceanbase.__all_server, c, 1);
|
||||
|
||||
connection conn1;
|
||||
begin;
|
||||
let $_i_ = 200;
|
||||
while ($_i_ > 120)
|
||||
{
|
||||
eval insert into test_multi_minor_merge_t values($_i_, 'Hello OceanBase & Happy New Year', 1);
|
||||
dec $_i_;
|
||||
}
|
||||
|
||||
connection conn1;
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
while ($_i_ > 80)
|
||||
{
|
||||
eval insert into test_multi_minor_merge_t values($_i_, 'Hello OceanBase & Happy New Year', 1);
|
||||
dec $_i_;
|
||||
}
|
||||
|
||||
connection conn1;
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
while ($_i_ > 40)
|
||||
{
|
||||
eval insert into test_multi_minor_merge_t values($_i_, 'Hello OceanBase & Happy New Year', 1);
|
||||
dec $_i_;
|
||||
}
|
||||
|
||||
connection conn1;
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
let $__now_time__ = query_get_value(select now() as c, c, 1);
|
||||
alter system set minor_compact_trigger = 1;
|
||||
--source mysql_test/include/wait_mini_minor_merge_for_table.inc
|
||||
|
||||
connection conn2;
|
||||
# 不同事务查询sstable未提交数据
|
||||
select * from test_multi_minor_merge_t;
|
||||
|
||||
connection conn1;
|
||||
#同一事务查询sstable未提交数据
|
||||
select * from test_multi_minor_merge_t where num > 190;
|
||||
|
||||
connection conn1;
|
||||
while ($_i_ > 0)
|
||||
{
|
||||
eval insert into test_multi_minor_merge_t values($_i_, 'Hello OceanBase & Happy New Year', 1);
|
||||
dec $_i_;
|
||||
}
|
||||
|
||||
connection conn1;
|
||||
alter system minor freeze;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn1;
|
||||
commit;
|
||||
|
||||
#查sstable未提交数据,但事务已提交
|
||||
select * from test_multi_minor_merge_t where num > 190;
|
||||
|
||||
connection conn2;
|
||||
select count(*) from test_multi_minor_merge_t;
|
||||
|
||||
drop table test_multi_minor_merge_t;
|
||||
alter system set minor_compact_trigger = 2;
|
||||
@ -0,0 +1,58 @@
|
||||
# owner: yanyuan.cxf
|
||||
# owner group: transaction
|
||||
# description: 本case是为了测试查询sstable上未提交的数据
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
connection conn1;
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
create table t1(a int);
|
||||
|
||||
connection conn0;
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= 't1', table_id, 1);
|
||||
|
||||
connection conn1;
|
||||
# 测试普通标记脏事务
|
||||
begin;
|
||||
insert into t1 value(1);
|
||||
insert into t1 value(2);
|
||||
insert into t1 value(3);
|
||||
insert into t1 value(4);
|
||||
insert into t1 value(5);
|
||||
insert into t1 value(6);
|
||||
|
||||
|
||||
connection conn0;
|
||||
set ob_query_timeout=100000000;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn2;
|
||||
# 不同事务查询sstable未提交数据
|
||||
select * from t1;
|
||||
|
||||
|
||||
connection conn1;
|
||||
#同一事务查询sstable未提交数据
|
||||
select * from t1;
|
||||
|
||||
commit;
|
||||
#查sstable未提交数据,但事务已提交
|
||||
select * from t1;
|
||||
|
||||
connection conn2;
|
||||
|
||||
select * from t1;
|
||||
|
||||
drop table t1;
|
||||
@ -0,0 +1,121 @@
|
||||
# owner: yanyuan.cxf
|
||||
# owner group: transaction
|
||||
# description: 本case是为了测试查询sstable上未提交的数据
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
set GLOBAL ob_query_timeout = 1000000000000;
|
||||
set GLOBAL ob_trx_timeout = 1000000000000;
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
connection conn1;
|
||||
--disable_warnings
|
||||
drop table if exists query_uncommitted_data2;
|
||||
--enable_warnings
|
||||
|
||||
create table query_uncommitted_data2(id int primary key, k int);
|
||||
|
||||
# 测试普通标记脏事务
|
||||
insert into query_uncommitted_data2 value(1,1);
|
||||
insert into query_uncommitted_data2 value(2,2);
|
||||
begin;
|
||||
insert into query_uncommitted_data2 value(3,3);
|
||||
insert into query_uncommitted_data2 value(4,4);
|
||||
insert into query_uncommitted_data2 value(5,5);
|
||||
|
||||
select * from query_uncommitted_data2;
|
||||
|
||||
select * from query_uncommitted_data2 where id=3;
|
||||
|
||||
connection conn0;
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= 'query_uncommitted_data2', table_id, 1);
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
|
||||
connection conn2;
|
||||
select * from query_uncommitted_data2;
|
||||
select * from query_uncommitted_data2 where id=1;
|
||||
select * from query_uncommitted_data2 where id=3;
|
||||
|
||||
connection conn1;
|
||||
select * from query_uncommitted_data2 where id in (1,3);
|
||||
|
||||
connection conn0;
|
||||
let $i=300;
|
||||
while ($i > 0)
|
||||
{
|
||||
sleep 1;
|
||||
dec $i;
|
||||
let $memtable_count = query_get_value(select count(1) as c from oceanbase.__all_virtual_memstore_info where tablet_id in (select tablet_id from __all_virtual_tablet_to_ls where table_id = $__table_id__) and is_active = 'NO', c, 1);
|
||||
if ($memtable_count == 0)
|
||||
{
|
||||
let $i = -5;
|
||||
}
|
||||
}
|
||||
|
||||
if ($i != -5)
|
||||
{
|
||||
--echo mini merge failed
|
||||
}
|
||||
|
||||
connection conn1;
|
||||
commit;
|
||||
#查sstable未提交数据,但事务已提交
|
||||
select * from query_uncommitted_data2 where id=5;
|
||||
select * from query_uncommitted_data2;
|
||||
|
||||
connection conn2;
|
||||
select * from query_uncommitted_data2 where id=5;
|
||||
select * from query_uncommitted_data2;
|
||||
--error 1062
|
||||
insert into query_uncommitted_data2 values(5,5);
|
||||
|
||||
connection conn1;
|
||||
begin;
|
||||
insert into query_uncommitted_data2 values(6,6);
|
||||
update query_uncommitted_data2 set k=10 where id=5;
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
let $i=300;
|
||||
while ($i > 0)
|
||||
{
|
||||
sleep 1;
|
||||
dec $i;
|
||||
let $memtable_count = query_get_value(select count(1) as c from oceanbase.__all_virtual_memstore_info where tablet_id in (select tablet_id from __all_virtual_tablet_to_ls where table_id = $__table_id__) and is_active = 'NO', c, 1);
|
||||
if ($memtable_count == 0)
|
||||
{
|
||||
let $i = -5;
|
||||
}
|
||||
}
|
||||
|
||||
if ($i != -5)
|
||||
{
|
||||
--echo mini merge failed
|
||||
}
|
||||
|
||||
connection conn2;
|
||||
set ob_query_timeout = 1000000;
|
||||
set ob_trx_timeout = 1000000;
|
||||
--error 1205
|
||||
insert into query_uncommitted_data2 values (6, 60);
|
||||
update query_uncommitted_data2 set k=10 where id=6;
|
||||
--error 1205
|
||||
update query_uncommitted_data2 set k=10 where id=5;
|
||||
select * from query_uncommitted_data2;
|
||||
|
||||
connection conn1;
|
||||
--error 1062
|
||||
insert into query_uncommitted_data2 values(6,6);
|
||||
select * from query_uncommitted_data2;
|
||||
commit;
|
||||
select * from query_uncommitted_data2;
|
||||
drop table query_uncommitted_data2;
|
||||
@ -0,0 +1,85 @@
|
||||
# owner: chaser.ch
|
||||
# owner group: storage
|
||||
# description: test if dirty macro block will be rewrited when no trx is terminated
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
set GLOBAL ob_query_timeout = 1000000000000;
|
||||
set GLOBAL ob_trx_timeout = 1000000000000;
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
connection conn1;
|
||||
alter system set minor_compact_trigger = 10;
|
||||
|
||||
connection conn1;
|
||||
--disable_warnings
|
||||
drop table if exists test_uncommitted_trx_minor_merge;
|
||||
--enable_warnings
|
||||
|
||||
create table test_uncommitted_trx_minor_merge(c1 int primary key, c2 int, c3 varchar(2048)) compression "none";
|
||||
|
||||
connection conn0;
|
||||
let $__tenant_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ tenant_id from oceanbase.__all_virtual_table where table_name= 'test_uncommitted_trx_minor_merge', tenant_id, 1);
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= 'test_uncommitted_trx_minor_merge', table_id, 1);
|
||||
|
||||
# prepare data, insert rows more than one macro
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
connection conn1;
|
||||
let $i=3000;
|
||||
begin;
|
||||
while ($i > 0)
|
||||
{
|
||||
eval insert into test_uncommitted_trx_minor_merge values ($i,$i,repeat('a', 2047));
|
||||
dec $i;
|
||||
}
|
||||
|
||||
connection conn1;
|
||||
alter system minor freeze;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn1;
|
||||
insert into test_uncommitted_trx_minor_merge values (3001, 3001, "aaaa");
|
||||
|
||||
connection conn1;
|
||||
alter system minor freeze;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
--enable_query_log
|
||||
--enable_result_log
|
||||
|
||||
connection conn1;
|
||||
insert into test_uncommitted_trx_minor_merge values (3002, 3002, "aaaa");
|
||||
|
||||
|
||||
connection conn1;
|
||||
insert into test_uncommitted_trx_minor_merge values (4000,4000,"a");
|
||||
|
||||
connection conn1;
|
||||
alter system minor freeze;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
let $__now_time__ = query_get_value(select now() as c, c, 1);
|
||||
alter system set minor_compact_trigger = 1;
|
||||
--source mysql_test/include/wait_mini_minor_merge_for_table.inc
|
||||
|
||||
connection conn1;
|
||||
select count(1) from test_uncommitted_trx_minor_merge;
|
||||
|
||||
connection conn0;
|
||||
let $use_old=query_get_value(select multiplexed_macro_block_count from oceanbase.__all_virtual_tablet_compaction_history where tablet_id in (select tablet_id from __all_virtual_tablet_to_ls where table_id = $__table_id__ and tenant_id=$__tenant_id__) order by finish_time desc limit 1, multiplexed_macro_block_count, 1);
|
||||
if ($use_old > 0)
|
||||
{
|
||||
--echo should not reuse macro
|
||||
}
|
||||
|
||||
connection conn1;
|
||||
select count(1) from test_uncommitted_trx_minor_merge;
|
||||
|
||||
drop table test_uncommitted_trx_minor_merge;
|
||||
alter system set minor_compact_trigger = 2;
|
||||
@ -0,0 +1,81 @@
|
||||
# owner: gengli.wzy
|
||||
# owner group: transaction
|
||||
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
connection conn0;
|
||||
alter system set _fast_commit_callback_count = 0;
|
||||
alter system set _private_buffer_size = '1B';
|
||||
|
||||
let $__timeout_def__ = 600 * 1000 * 1000;
|
||||
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connection conn1;
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
sleep 2;
|
||||
|
||||
connection conn1;
|
||||
--disable_warnings
|
||||
drop table if exists test_rollback_and_major_t;
|
||||
--enable_warnings
|
||||
create table test_rollback_and_major_t(row_key int primary key, row_value int);
|
||||
let $__freeze_table_name__ = 'test_rollback_and_major_t';
|
||||
|
||||
|
||||
connection conn1;
|
||||
eval insert into test_rollback_and_major_t values(1,1);
|
||||
begin;
|
||||
|
||||
connection conn2;
|
||||
begin;
|
||||
|
||||
let $__i__ = 0;
|
||||
while ($__i__ < 200)
|
||||
{
|
||||
inc $__i__;
|
||||
inc $__i__;
|
||||
|
||||
# 分别修改key为1的行并回滚
|
||||
connection conn1;
|
||||
savepoint x;
|
||||
eval update test_rollback_and_major_t set row_value = $__i__ * 123 where row_key = 1;
|
||||
eval insert into test_rollback_and_major_t values($__i__ + 3000, $__i__);
|
||||
rollback to savepoint x;
|
||||
eval insert into test_rollback_and_major_t values($__i__ * 10, 1);
|
||||
select count(*) from test_rollback_and_major_t;
|
||||
|
||||
connection conn2;
|
||||
savepoint x;
|
||||
eval update test_rollback_and_major_t set row_value = $__i__ * 321 where row_key = 1;
|
||||
eval insert into test_rollback_and_major_t values($__i__ + 3000, $__i__);
|
||||
rollback to savepoint x;
|
||||
eval insert into test_rollback_and_major_t values($__i__ * 10 + 5, 1);
|
||||
select count(*) from test_rollback_and_major_t;
|
||||
}
|
||||
|
||||
connection conn1;
|
||||
commit;
|
||||
select * from test_rollback_and_major_t;
|
||||
|
||||
connection conn2;
|
||||
commit;
|
||||
select * from test_rollback_and_major_t;
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn0;
|
||||
let $__now_time__ = query_get_value(select now() as c, c, 1);
|
||||
let $__freeze_tenant_name__ = 'mysql';
|
||||
--source mysql_test/include/major_freeze_tenant_and_wait_done.inc
|
||||
|
||||
# reset config
|
||||
connection conn0;
|
||||
alter system set _private_buffer_size = '16K';
|
||||
alter system set _fast_commit_callback_count = 10000;
|
||||
@ -0,0 +1,124 @@
|
||||
# owner: gengli.wzy
|
||||
# owner group: transaction
|
||||
# description: 本case是为了测试在含未提交事务的状态下,with savepoint
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
let $__timeout_def__ = 60 * 1000 * 1000;
|
||||
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connection conn1;
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
eval set SESSION ob_query_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_timeout = $__timeout_def__;
|
||||
eval set SESSION ob_trx_idle_timeout = $__timeout_def__;
|
||||
|
||||
connection conn1;
|
||||
alter system set minor_compact_trigger = 10;
|
||||
sleep 2;
|
||||
|
||||
connection conn1;
|
||||
--disable_warnings
|
||||
drop table if exists test_rollback_sql_sequence_t;
|
||||
--enable_warnings
|
||||
|
||||
#建表
|
||||
create table test_rollback_sql_sequence_t(num int, str varchar(50), tag int);
|
||||
let $__freeze_table_name__ = 'test_rollback_sql_sequence_t';
|
||||
|
||||
connection conn0;
|
||||
let $__tenant_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ tenant_id from oceanbase.__all_virtual_table where table_name= $__freeze_table_name__, tenant_id, 1);
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= $__freeze_table_name__, table_id, 1);
|
||||
let $__svr_cnt__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ count(*) as c from oceanbase.__all_server, c, 1);
|
||||
|
||||
connection conn1;
|
||||
#事务开始 插入数据
|
||||
begin;
|
||||
insert into test_rollback_sql_sequence_t value(100, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_rollback_sql_sequence_t value(99, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_rollback_sql_sequence_t value(98, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_rollback_sql_sequence_t value(97, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_rollback_sql_sequence_t value(96, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_rollback_sql_sequence_t value(95, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_rollback_sql_sequence_t value(94, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_rollback_sql_sequence_t value(93, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_rollback_sql_sequence_t value(92, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_rollback_sql_sequence_t value(91, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_rollback_sql_sequence_t value(90, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_rollback_sql_sequence_t value(89, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_rollback_sql_sequence_t value(88, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_rollback_sql_sequence_t value(87, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_rollback_sql_sequence_t value(86, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_rollback_sql_sequence_t value(85, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_rollback_sql_sequence_t value(84, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_rollback_sql_sequence_t value(83, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_rollback_sql_sequence_t value(82, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_rollback_sql_sequence_t value(81, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_rollback_sql_sequence_t value(80, 'Hello OceanBase & Happy New Year', 1);
|
||||
|
||||
connection conn1;
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
#create Savepoint p1
|
||||
SAVEPOINT p1;
|
||||
|
||||
insert into test_rollback_sql_sequence_t value(5, 'Hello OceanBase & Happy New Year', 2);
|
||||
insert into test_rollback_sql_sequence_t value(4, 'Hello OceanBase & Happy New Year', 2);
|
||||
insert into test_rollback_sql_sequence_t value(3, 'Hello OceanBase & Happy New Year', 2);
|
||||
insert into test_rollback_sql_sequence_t value(2, 'Hello OceanBase & Happy New Year', 2);
|
||||
insert into test_rollback_sql_sequence_t value(1, 'Hello OceanBase & Happy New Year', 2);
|
||||
|
||||
#create Savepoint p2
|
||||
connection conn1;
|
||||
SAVEPOINT p2;
|
||||
update test_rollback_sql_sequence_t set tag = (num + tag) * 10;
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
let $__now_time__ = query_get_value(select now() as c, c, 1);
|
||||
alter system set minor_compact_trigger = 1;
|
||||
--source mysql_test/include/wait_mini_minor_merge_for_table.inc
|
||||
|
||||
connection conn1;
|
||||
select * from test_rollback_sql_sequence_t;
|
||||
|
||||
ROLLBACK TO SAVEPOINT p2;
|
||||
|
||||
connection conn1;
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
select * from test_rollback_sql_sequence_t;
|
||||
|
||||
connection conn1;
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
ROLLBACK TO SAVEPOINT p1;
|
||||
select * from test_rollback_sql_sequence_t;
|
||||
|
||||
#不同事务查询sstable未提交事务(COMMIT)
|
||||
connection conn2;
|
||||
select * from test_rollback_sql_sequence_t;
|
||||
|
||||
connection conn1;
|
||||
commit;
|
||||
#同一事务查sstable未提交数据(COMMIT)
|
||||
select * from test_rollback_sql_sequence_t;
|
||||
|
||||
#不同事务查询sstable未提交事务(COMMIT)
|
||||
connection conn2;
|
||||
select * from test_rollback_sql_sequence_t;
|
||||
|
||||
drop table test_rollback_sql_sequence_t;
|
||||
alter system set minor_compact_trigger = 2;
|
||||
@ -0,0 +1,143 @@
|
||||
# owner: lixia.yq
|
||||
# owner group: transaction
|
||||
# description: 本case是为了测试在含未提交事务的状态下的savepoint回滚功能
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
set GLOBAL ob_query_timeout = 1000000000000;
|
||||
set GLOBAL ob_trx_timeout = 10000000000000;
|
||||
set GLOBAL ob_trx_idle_timeout = 10000000000;
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
|
||||
connection conn1;
|
||||
alter system set minor_compact_trigger = 10;
|
||||
sleep 2;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
#建表
|
||||
create table t1(c1 int primary key, c2 varchar(50), c3 int, c4 datetime(6), c5 datetime(6)) table_mode = 'queuing';
|
||||
|
||||
connection conn0;
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= 't1', table_id, 1);
|
||||
|
||||
connection conn1;
|
||||
#事务开始 插入数据
|
||||
begin;
|
||||
|
||||
#create Savepoint
|
||||
SAVEPOINT p0;
|
||||
|
||||
#insert 30 rows
|
||||
--disable_query_log
|
||||
|
||||
let $i=0;
|
||||
while($i < 30)
|
||||
{
|
||||
eval insert into t1 values($i + 1000, 'Hello OceanBase & Happy New Year', $i, '2012-10-10 12:00:00','2012-10-10');
|
||||
inc $i;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn1;
|
||||
#create Savepoint
|
||||
SAVEPOINT p1;
|
||||
|
||||
insert into t1 value(5, 'Hello OceanBase & Happy New Year', 2, '2012-10-10 12:00:00','2012-10-10');
|
||||
insert into t1 value(4, 'Hello OceanBase & Happy New Year', 2, '2012-10-10 12:00:00','2012-10-10');
|
||||
insert into t1 value(3, 'Hello OceanBase & Happy New Year', 2, '2012-10-10 12:00:00','2012-10-10');
|
||||
insert into t1 value(2, 'Hello OceanBase & Happy New Year', 2, '2012-10-10 12:00:00','2012-10-10');
|
||||
insert into t1 value(1, 'Hello OceanBase & Happy New Year', 2, '2012-10-10 12:00:00','2012-10-10');
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
#create Savepoint
|
||||
connection conn1;
|
||||
SAVEPOINT p2;
|
||||
|
||||
update t1 set c3 = c1;
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
#create Savepoint
|
||||
connection conn1;
|
||||
SAVEPOINT p3;
|
||||
|
||||
update t1 set c2 = 'rollback rooooooooll';
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn1;
|
||||
#should be 0
|
||||
select count(*) from t1 where c2 like '%oceanbase%';
|
||||
|
||||
ROLLBACK TO SAVEPOINT p3;
|
||||
|
||||
#should be 35
|
||||
select count(*) from t1 where c2 like '%oceanbase%';
|
||||
|
||||
connection conn1;
|
||||
#should be 35
|
||||
select count(*) from t1 where c3 = c1;
|
||||
|
||||
ROLLBACK TO SAVEPOINT p2;
|
||||
|
||||
#should be 1(2, 2)
|
||||
select count(*) from t1 where c3 = c1;
|
||||
|
||||
connection conn1;
|
||||
ROLLBACK TO SAVEPOINT p1;
|
||||
|
||||
#should be 30
|
||||
select count(*) from t1;
|
||||
|
||||
connection conn1;
|
||||
ROLLBACK TO SAVEPOINT p0;
|
||||
|
||||
#should be 0
|
||||
select count(*) from t1;
|
||||
|
||||
connection conn2;
|
||||
select * from t1;
|
||||
|
||||
connection conn1;
|
||||
commit;
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn2;
|
||||
select * from t1;
|
||||
|
||||
connection conn1;
|
||||
drop table t1;
|
||||
alter system set minor_compact_trigger = 2;
|
||||
@ -0,0 +1,136 @@
|
||||
# owner: lixia.yq
|
||||
# owner group: transaction
|
||||
# description: 本case是为了测试在含未提交事务的状态下的savepoint回滚测试(多次rollback到同一个savepoint)
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
set GLOBAL ob_query_timeout = 1000000000000;
|
||||
set GLOBAL ob_trx_timeout = 10000000000000;
|
||||
set GLOBAL ob_trx_idle_timeout = 10000000000;
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
connection conn1;
|
||||
alter system set minor_compact_trigger = 10;
|
||||
sleep 2;
|
||||
|
||||
connection conn1;
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
#建表
|
||||
create table t1(c1 int primary key, c2 varchar(50), c3 int, c4 datetime(6), c5 datetime(6)) table_mode = 'queuing';
|
||||
|
||||
connection conn0;
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= 't1', table_id, 1);
|
||||
|
||||
connection conn1;
|
||||
#事务开始 插入数据
|
||||
begin;
|
||||
|
||||
#insert 30 rows
|
||||
--disable_query_log
|
||||
|
||||
let $i=0;
|
||||
while($i < 30)
|
||||
{
|
||||
eval insert into t1 values($i + 1000, 'Hello OceanBase & Happy New Year', $i, '2012-10-10 12:00:00','2012-10-10');
|
||||
inc $i;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn1;
|
||||
#create Savepoint
|
||||
SAVEPOINT p1;
|
||||
|
||||
insert into t1 value(5, 'Hello OceanBase & Happy New Year', 2, '2012-10-10 12:00:00','2012-10-10');
|
||||
insert into t1 value(4, 'Hello OceanBase & Happy New Year', 2, '2012-10-10 12:00:00','2012-10-10');
|
||||
insert into t1 value(3, 'Hello OceanBase & Happy New Year', 2, '2012-10-10 12:00:00','2012-10-10');
|
||||
insert into t1 value(2, 'Hello OceanBase & Happy New Year', 2, '2012-10-10 12:00:00','2012-10-10');
|
||||
insert into t1 value(1, 'Hello OceanBase & Happy New Year', 2, '2012-10-10 12:00:00','2012-10-10');
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn1;
|
||||
#should be 35
|
||||
select count(*) from t1;
|
||||
|
||||
ROLLBACK TO SAVEPOINT p1;
|
||||
|
||||
connection conn1;
|
||||
#should be 0
|
||||
select count(*) from t1 where c1 < 1000;
|
||||
|
||||
connection conn1;
|
||||
#insert 10 rows
|
||||
--disable_query_log
|
||||
|
||||
let $i=0;
|
||||
while($i < 10)
|
||||
{
|
||||
eval insert into t1 values($i + 2000, 'Hello OceanBase & Happy New Year', $i, '2012-10-10 12:00:00','2012-10-10');
|
||||
inc $i;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn1;
|
||||
#should be 40
|
||||
select count(*) from t1;
|
||||
|
||||
ROLLBACK TO SAVEPOINT p1;
|
||||
#should be 30
|
||||
select count(*) from t1;
|
||||
|
||||
connection conn1;
|
||||
#insert 10 rows
|
||||
--disable_query_log
|
||||
|
||||
let $i=0;
|
||||
while($i < 10)
|
||||
{
|
||||
eval insert into t1 values($i + 3000, 'Hello OceanBase & Happy New Year', $i, '2012-10-10 12:00:00','2012-10-10');
|
||||
inc $i;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
update t1 set c3 = c1 * c3;
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn1;
|
||||
#should be 40
|
||||
select count(*) from t1 where c3 % c1 = 0;
|
||||
|
||||
ROLLBACK TO SAVEPOINT p1;
|
||||
|
||||
#should be 1(1000, 0)
|
||||
select count(*) from t1 where c3 % c1 = 0;
|
||||
|
||||
connection conn1;
|
||||
drop table t1;
|
||||
alter system set minor_compact_trigger = 2;
|
||||
@ -0,0 +1,128 @@
|
||||
# owner: lixia.yq
|
||||
# owner group: transaction
|
||||
# description: 本case是为了测试在含未提交事务的状态下,with savepoint
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
set GLOBAL ob_query_timeout = 1000000000000;
|
||||
set GLOBAL ob_trx_timeout = 10000000000000;
|
||||
set GLOBAL ob_trx_idle_timeout = 10000000000;
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
connection conn0;
|
||||
alter system set syslog_io_bandwidth_limit = '100G';
|
||||
|
||||
connection conn1;
|
||||
alter system set minor_compact_trigger = 10;
|
||||
sleep 2;
|
||||
|
||||
connection conn1;
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
#建表
|
||||
create table t1(num int, str varchar(2000), tag int);
|
||||
connection conn0;
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= 't1', table_id, 1);
|
||||
let $__svr_cnt__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ count(*) as c from oceanbase.__all_server, c, 1);
|
||||
connection conn1;
|
||||
insert into t1 values(1, repeat('Hello OceanBase', 50), 1);
|
||||
#事务开始 插入数据
|
||||
begin;
|
||||
connection conn1;
|
||||
#create Savepoint
|
||||
SAVEPOINT p1;
|
||||
--disable_query_log
|
||||
let $i=0;
|
||||
while($i < 3000)
|
||||
{
|
||||
eval update t1 set str = repeat('Hello OceanBase$i', 50) where num = 1;
|
||||
inc $i;
|
||||
}
|
||||
--enable_query_log
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
connection conn2;
|
||||
--error 1205
|
||||
select * from t1 where num = 1 for update nowait;
|
||||
connection conn1;
|
||||
ROLLBACK TO SAVEPOINT p1;
|
||||
connection conn2;
|
||||
select * from t1 where num = 1 for update nowait;
|
||||
connection conn1;
|
||||
update t1 set str = repeat('Hello OceanBase9', 50) where num = 1;
|
||||
#create Savepoint
|
||||
SAVEPOINT p2;
|
||||
--disable_query_log
|
||||
let $i=0;
|
||||
while($i < 3000)
|
||||
{
|
||||
eval update t1 set str = repeat('Hello OceanBase$i', 50) where num = 1;
|
||||
inc $i;
|
||||
}
|
||||
--enable_query_log
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
connection conn2;
|
||||
--error 1205
|
||||
select * from t1 where num = 1 for update nowait;
|
||||
connection conn1;
|
||||
ROLLBACK TO SAVEPOINT p2;
|
||||
connection conn2;
|
||||
--error 1205
|
||||
select * from t1 where num = 1 for update nowait;
|
||||
connection conn1;
|
||||
commit;
|
||||
connection conn2;
|
||||
select * from t1 where num = 1 for update nowait;
|
||||
connection conn1;
|
||||
begin;
|
||||
--disable_query_log
|
||||
let $i=0;
|
||||
while($i < 3000)
|
||||
{
|
||||
eval update t1 set str = repeat('Hello OceanBase$i', 50) where num = 1;
|
||||
inc $i;
|
||||
}
|
||||
--enable_query_log
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
connection conn2;
|
||||
--error 1205
|
||||
select * from t1 where num = 1 for update nowait;
|
||||
connection conn1;
|
||||
rollback;
|
||||
connection conn2;
|
||||
select * from t1 where num = 1 for update nowait;
|
||||
connection conn1;
|
||||
begin;
|
||||
update t1 set str = repeat('Hello OceanBase0.', 50) where num = 1;
|
||||
connection conn2;
|
||||
--error 1205
|
||||
select * from t1 where num = 1 for update nowait;
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
connection conn2;
|
||||
--error 1205
|
||||
select * from t1 where num = 1 for update nowait;
|
||||
connection conn1;
|
||||
commit;
|
||||
connection conn2;
|
||||
select * from t1 where num = 1 for update nowait;
|
||||
drop table t1;
|
||||
alter system set minor_compact_trigger = 2;
|
||||
@ -0,0 +1,122 @@
|
||||
# owner: gengli.wzy
|
||||
# owner group: transaction
|
||||
# description: 本case是为了测试在含未提交事务的Rollback
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
set GLOBAL ob_query_timeout = 1000000000000;
|
||||
set GLOBAL ob_trx_timeout = 10000000000000;
|
||||
set GLOBAL ob_trx_idle_timeout = 10000000000;
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
connection conn2;
|
||||
alter system set minor_compact_trigger = 10;
|
||||
sleep 2;
|
||||
|
||||
connection conn1;
|
||||
--disable_warnings
|
||||
drop table if exists test_rollback_trans_t;
|
||||
--enable_warnings
|
||||
|
||||
#建表
|
||||
create table test_rollback_trans_t(num int, str varchar(50), tag int);
|
||||
let $__freeze_table_name__ = 'test_rollback_trans_t';
|
||||
|
||||
connection conn0;
|
||||
let $__tenant_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ tenant_id from oceanbase.__all_virtual_table where table_name= $__freeze_table_name__, tenant_id, 1);
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= $__freeze_table_name__, table_id, 1);
|
||||
let $__svr_cnt__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ count(*) as c from oceanbase.__all_server, c, 1);
|
||||
|
||||
|
||||
connection conn1;
|
||||
#事务开始 插入数据
|
||||
begin;
|
||||
let $_i_ = 1;
|
||||
while ($_i_ <= 20)
|
||||
{
|
||||
eval insert into test_rollback_trans_t value($_i_, 'Hello OceanBase & Happy New Year', 1);
|
||||
inc $_i_;
|
||||
}
|
||||
|
||||
connection conn2;
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
let $_i_ = 21;
|
||||
while ($_i_ <= 40)
|
||||
{
|
||||
eval insert into test_rollback_trans_t value($_i_, 'Hello OceanBase & Happy New Year', 2);
|
||||
inc $_i_;
|
||||
}
|
||||
|
||||
update test_rollback_trans_t set tag = (num + tag) * 10;
|
||||
|
||||
#不同事务查询sstable未提交事务
|
||||
connection conn2;
|
||||
select * from test_rollback_trans_t;
|
||||
|
||||
connection conn1;
|
||||
select * from test_rollback_trans_t;
|
||||
|
||||
# test mini minor merge
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
let $__now_time__ = query_get_value(select now() as c, c, 1);
|
||||
alter system set minor_compact_trigger = 1;
|
||||
--source mysql_test/include/wait_mini_minor_merge_for_table.inc
|
||||
|
||||
connection conn1;
|
||||
select * from test_rollback_trans_t;
|
||||
|
||||
ROLLBACK;
|
||||
|
||||
connection conn2;
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
select * from test_rollback_trans_t;
|
||||
|
||||
#不同事务查询sstable未提交事务(ROLLBACK)
|
||||
connection conn2;
|
||||
select * from test_rollback_trans_t;
|
||||
|
||||
#插入数据
|
||||
connection conn1;
|
||||
let $_i_ = 41;
|
||||
while ($_i_ <= 50)
|
||||
{
|
||||
eval insert into test_rollback_trans_t value($_i_, 'Hello OceanBase & Happy New Year', 2);
|
||||
inc $_i_;
|
||||
}
|
||||
|
||||
begin;
|
||||
update test_rollback_trans_t set tag = (num + tag) * 10;
|
||||
|
||||
#不同事务查询sstable
|
||||
connection conn2;
|
||||
select * from test_rollback_trans_t;
|
||||
|
||||
#同一事务查询sstable(update)之后的
|
||||
connection conn1;
|
||||
select * from test_rollback_trans_t;
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
ROLLBACK;
|
||||
|
||||
--source mysql_test/include/minor_freeze_tablet_and_wait_done.inc
|
||||
|
||||
connection conn1;
|
||||
select * from test_rollback_trans_t;
|
||||
|
||||
connection conn2;
|
||||
select * from test_rollback_trans_t;
|
||||
|
||||
drop table test_rollback_trans_t;
|
||||
alter system set minor_compact_trigger = 2;
|
||||
@ -0,0 +1,69 @@
|
||||
#owner : chaser.ch
|
||||
#owner group : storage
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
set GLOBAL ob_query_timeout = 1000000000000;
|
||||
set GLOBAL ob_trx_timeout = 10000000000000;
|
||||
set GLOBAL ob_trx_idle_timeout = 10000000000;
|
||||
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= 't1', table_id, 1);
|
||||
let $__svr_cnt__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ count(*) as c from oceanbase.__all_server, c, 1);
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1_fuse;
|
||||
--enable_warnings
|
||||
|
||||
create table t1_fuse(a int primary key, b int, c int);
|
||||
|
||||
let $cnt = 5;
|
||||
while ($cnt)
|
||||
{
|
||||
eval insert into t1_fuse values($cnt, 1, 1);
|
||||
dec $cnt;
|
||||
}
|
||||
|
||||
update t1_fuse set b = 2 where a = 2;
|
||||
update t1_fuse set b = 3 where a = 2;
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
sleep 3;
|
||||
|
||||
connection conn1;
|
||||
select * from t1_fuse where a = 2;
|
||||
|
||||
set autocommit=0;
|
||||
begin;
|
||||
update t1_fuse set c = 2 where a = 2;
|
||||
sleep 1;
|
||||
select * from t1_fuse where a = 2;
|
||||
select * from t1_fuse where a = 2;
|
||||
update t1_fuse set c = 3 where a = 2;
|
||||
sleep 1;
|
||||
select * from t1_fuse where a = 2;
|
||||
select * from t1_fuse where a = 2;
|
||||
sleep 1;
|
||||
|
||||
connection conn2;
|
||||
select * from t1_fuse where a = 2;
|
||||
|
||||
connection conn1;
|
||||
rollback;
|
||||
select * from t1_fuse where a = 2;
|
||||
|
||||
connection conn2;
|
||||
select * from t1_fuse where a = 2;
|
||||
|
||||
select * from t1_fuse order by a asc;
|
||||
|
||||
drop table t1_fuse;
|
||||
@ -0,0 +1,94 @@
|
||||
# owner: chaser.ch
|
||||
# owner group: storage
|
||||
# description: 本case是为了测试查询sstable上未提交的数据 single_get
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
set GLOBAL ob_query_timeout = 1000000000000;
|
||||
set GLOBAL ob_trx_timeout = 1000000000000;
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
connection conn1;
|
||||
--disable_warnings
|
||||
drop table if exists test_uncommitted_trx_minor_merge;
|
||||
--enable_warnings
|
||||
|
||||
create table test_uncommitted_trx_minor_merge(a int primary key, b int, key ib(b));
|
||||
|
||||
# 测试普通标记脏事务
|
||||
begin;
|
||||
insert into test_uncommitted_trx_minor_merge value(1, 1);
|
||||
insert into test_uncommitted_trx_minor_merge value(2, 2);
|
||||
|
||||
connection conn0;
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= 'test_uncommitted_trx_minor_merge', table_id, 1);
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn2;
|
||||
# 不同事务查询sstable未提交数据
|
||||
select * from test_uncommitted_trx_minor_merge where a = 1;
|
||||
|
||||
|
||||
connection conn1;
|
||||
#同一事务查询sstable未提交数据
|
||||
select * from test_uncommitted_trx_minor_merge where a = 1;
|
||||
|
||||
# 未提交的事务不能进fuse row cache
|
||||
connection conn2;
|
||||
select * from test_uncommitted_trx_minor_merge where a = 1;
|
||||
|
||||
connection conn1;
|
||||
update test_uncommitted_trx_minor_merge set b = 10 where a = 1;
|
||||
|
||||
commit;
|
||||
#查sstable未提交数据,但事务已提交
|
||||
select * from test_uncommitted_trx_minor_merge where a = 1;
|
||||
select * from test_uncommitted_trx_minor_merge where a = 2;
|
||||
|
||||
connection conn2;
|
||||
|
||||
select * from test_uncommitted_trx_minor_merge where a = 1;
|
||||
select * from test_uncommitted_trx_minor_merge where a = 2;
|
||||
|
||||
insert into test_uncommitted_trx_minor_merge values (3,3);
|
||||
begin;
|
||||
select * from test_uncommitted_trx_minor_merge where a = 3 for update;
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn1;
|
||||
set ob_query_timeout = 1000000;
|
||||
set ob_trx_timeout = 1000000;
|
||||
--error 1205
|
||||
select * from test_uncommitted_trx_minor_merge where a = 3 for update nowait;
|
||||
set ob_query_timeout = 1000000000000;
|
||||
set ob_trx_timeout = 1000000000000;
|
||||
|
||||
connection conn2;
|
||||
select * from test_uncommitted_trx_minor_merge where a = 3;
|
||||
update test_uncommitted_trx_minor_merge set b = 30 where a = 3;
|
||||
select * from test_uncommitted_trx_minor_merge where a = 3;
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn2;
|
||||
rollback;
|
||||
select * from test_uncommitted_trx_minor_merge where a = 3;
|
||||
|
||||
drop table test_uncommitted_trx_minor_merge;
|
||||
@ -0,0 +1,138 @@
|
||||
# owner: chaser.ch
|
||||
# owner group: transaction
|
||||
# description: 本case是为了测试在含未提交事务的BufMerge,含增/减列操作
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
connection conn1;
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
#建表
|
||||
create table t1(
|
||||
obschema_c_0_68XcHo tinyint(255) NOT NULL,
|
||||
obschema_c_1_lTMGZYJ varchar(200) NULL default NULL,
|
||||
obschema_c_2_ENEd tinyint(255) NULL,
|
||||
obschema_c_3_OpRK varbinary(255) NULL default NULL,
|
||||
obschema_c_4_fpdB float NOT NULL,
|
||||
obschema_c_5_Gq varbinary(255) NULL default NULL,
|
||||
obschema_c_6_u6dri varchar(150) NOT NULL default 'CDEFGHI01',
|
||||
obschema_c_7_XB decimal(20,12) NOT NULL default 0.20329070,
|
||||
obschema_c_8_7cq4kl double NULL default NULL,
|
||||
obschema_c_9_ywrfyF decimal(10,5) NOT NULL default 0.01001) table_mode='queuing';
|
||||
|
||||
|
||||
connection conn0;
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= 't1', table_id, 1);
|
||||
|
||||
connection conn1;
|
||||
--disable_query_log
|
||||
let $i=0;
|
||||
while($i < 30)
|
||||
{
|
||||
eval insert into t1 values($i, 'Hello OceanBase & Happy New Year1', $i, 9153608021209109295703075050360401, $i * 0.2,
|
||||
9153608021209109295703075050360401, 'Hello OceanBase & Happy New Year3', $i * 0.2, $i * 0.2, $i * 0.2);
|
||||
inc $i;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn1;
|
||||
--disable_query_log
|
||||
let $i=30;
|
||||
while($i < 60)
|
||||
{
|
||||
eval insert into t1 values($i, 'Hello OceanBase & Happy New Year1', $i, 9153608021209109295703075050360401, $i * 0.2,
|
||||
9153608021209109295703075050360401, 'Hello OceanBase & Happy New Year3', $i * 0.2, $i * 0.2, $i * 0.2);
|
||||
inc $i;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
|
||||
connection conn0;
|
||||
alter system major freeze tenant = sys;
|
||||
alter system major freeze tenant = all_user;
|
||||
alter system major freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_daily_merge.inc
|
||||
|
||||
connection conn1;
|
||||
alter table t1 add column obschema_c_10_Y decimal(25,10) NOT NULL default 0.20349070 FIRST ,
|
||||
add column obschema_c_11_z float NOT NULL default 0.123470 AFTER obschema_c_0_68XcHo,
|
||||
add column obschema_c_12_PzG varchar(20) NULL default 'aEFGHI01' BEFORE obschema_c_1_lTMGZYJ;
|
||||
|
||||
connection conn1;
|
||||
--disable_query_log
|
||||
|
||||
let $i=60;
|
||||
while($i < 90)
|
||||
{
|
||||
eval insert into t1 values($i * 0.2, $i, $i * 0.2, 'Hello OceanBase', 'Hello OceanBase & Happy New Year1',
|
||||
$i, 9153608021209109295703075050360401, $i * 0.2,
|
||||
9153608021209109295703075050360401, 'Hello OceanBase & Happy New Year3', $i * 0.2, $i * 0.2, $i * 0.2);
|
||||
inc $i;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn1;
|
||||
alter table t1 drop column obschema_c_3_OpRK;
|
||||
|
||||
connection conn1;
|
||||
--disable_query_log
|
||||
let $i=90;
|
||||
while($i < 120)
|
||||
{
|
||||
eval insert into t1 values($i * 0.2, $i % 10, $i * 0.2, 'Hello OceanBase', 'Hello OceanBase & Happy New Year1',
|
||||
$i % 10, $i * 0.2,
|
||||
9153608021209109295703075050360401, 'Hello OceanBase & Happy New Year3', $i * 0.2, $i * 0.2, $i * 0.2);
|
||||
inc $i;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn1;
|
||||
--disable_query_log
|
||||
let $i=120;
|
||||
while($i < 150)
|
||||
{
|
||||
eval insert into t1 values($i * 0.2, $i % 10, $i * 0.2, 'Hello OceanBase', 'Hello OceanBase & Happy New Year1',
|
||||
$i % 10, $i * 0.2,
|
||||
9153608021209109295703075050360401, 'Hello OceanBase & Happy New Year3', $i * 0.2, $i * 0.2, $i * 0.2);
|
||||
inc $i;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn1;
|
||||
select * from t1 limit 1;
|
||||
select count(*) from t1;
|
||||
|
||||
drop table t1;
|
||||
|
||||
@ -0,0 +1,114 @@
|
||||
# owner: gengli.wzy
|
||||
# owner group: transaction
|
||||
# description: 本case是为了测试在含未提交事务的状态下,在执行update的操作下,多次minor merge的正确性
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
set GLOBAL ob_query_timeout = 1000000000000;
|
||||
set GLOBAL ob_trx_timeout = 1000000000000;
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
connection conn1;
|
||||
alter system set minor_compact_trigger = 10;
|
||||
|
||||
connection conn1;
|
||||
--disable_warnings
|
||||
drop table if exists test_update_uncommitted_data;
|
||||
--enable_warnings
|
||||
|
||||
#建表
|
||||
create table test_update_uncommitted_data(num int, str varchar(50), tag int);
|
||||
|
||||
connection conn0;
|
||||
let $__tenant_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ tenant_id from oceanbase.__all_virtual_table where table_name= 'test_update_uncommitted_data', tenant_id, 1);
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= 'test_update_uncommitted_data', table_id, 1);
|
||||
let $__svr_cnt__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ count(*) as c from oceanbase.__all_server, c, 1);
|
||||
|
||||
connection conn1;
|
||||
#事务开始 插入数据
|
||||
begin;
|
||||
insert into test_update_uncommitted_data value(100, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(99, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(98, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(97, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(96, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(95, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(94, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(93, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(92, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(91, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(90, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(89, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(88, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(87, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(86, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(85, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(84, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(83, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(82, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(81, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(80, 'Hello OceanBase & Happy New Year', 1);
|
||||
|
||||
connection conn1;
|
||||
alter system minor freeze;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn1;
|
||||
#执行update操作
|
||||
update test_update_uncommitted_data set tag = num + tag where tag = 1;
|
||||
|
||||
alter system minor freeze;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn1;
|
||||
#再插入数据
|
||||
insert into test_update_uncommitted_data value(50, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(49, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(48, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(47, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(46, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(45, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(44, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(43, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(42, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(41, 'Hello OceanBase & Happy New Year', 1);
|
||||
insert into test_update_uncommitted_data value(40, 'Hello OceanBase & Happy New Year', 1);
|
||||
|
||||
alter system minor freeze;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
# test mini minor merge
|
||||
let $__now_time__ = query_get_value(select now() as c, c, 1);
|
||||
alter system set minor_compact_trigger = 1;
|
||||
--source mysql_test/include/wait_mini_minor_merge_for_table.inc
|
||||
|
||||
connection conn2;
|
||||
# 不同事务查询sstable未提交数据
|
||||
select * from test_update_uncommitted_data;
|
||||
|
||||
connection conn1;
|
||||
#同一事务查询sstable未提交数据
|
||||
select * from test_update_uncommitted_data;
|
||||
|
||||
connection conn1;
|
||||
update test_update_uncommitted_data set tag = num + tag where tag = 1;
|
||||
|
||||
alter system minor freeze;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn1;
|
||||
commit;
|
||||
#同一事务查sstable未提交数据(COMMIT)
|
||||
select * from test_update_uncommitted_data;
|
||||
|
||||
#不同事务查询sstable未提交事务(COMMIT)
|
||||
connection conn2;
|
||||
select count(*) from test_update_uncommitted_data;
|
||||
|
||||
drop table test_update_uncommitted_data;
|
||||
alter system set minor_compact_trigger = 2;
|
||||
@ -0,0 +1,92 @@
|
||||
# owner: lixia.yq
|
||||
# owner group: storage
|
||||
# description:This case is to test the correctness of the savepoint rollback in a table with index
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
set GLOBAL ob_query_timeout = 1000000000000;
|
||||
set GLOBAL ob_trx_timeout = 10000000000000;
|
||||
set GLOBAL ob_trx_idle_timeout = 10000000000;
|
||||
|
||||
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
|
||||
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
|
||||
|
||||
connection conn1;
|
||||
alter system set minor_compact_trigger = 1;
|
||||
sleep 2;
|
||||
|
||||
connection conn1;
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
connection conn1;
|
||||
create table t1(c1 int, c2 int, c3 varchar(100), v1 varchar(1000), v2 varchar(1000), r1 int, r2 int, primary key(c1, c2, c3));
|
||||
create index idx1 on t1(c1,c2,c3,r2,r1) storing(v1) LOCAL;
|
||||
|
||||
connection conn0;
|
||||
let $__table_id__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ table_id from oceanbase.__all_virtual_table where table_name= 't1', table_id, 1);
|
||||
let $__svr_cnt__=query_get_value(select /*+QUERY_TIMEOUT(10000000)*/ count(*) as c from oceanbase.__all_server, c, 1);
|
||||
connection conn1;
|
||||
#insert
|
||||
--disable_query_log
|
||||
|
||||
begin;
|
||||
insert into t1 values(1, 1, "c300000000000001", "v100000000000000000001", "v200000000000000000001", 1, 1);
|
||||
insert into t1 values(2, 2, "c300000000000002", "v100000000000000000002", "v200000000000000000002", 2, 2);
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
|
||||
connection conn1;
|
||||
select /*+ INDEX(t1 idx1)*/c1, c2, c3, r1, r2, v1 from t1;
|
||||
|
||||
update t1 set v1 = "11111111111" where c1 = 1 and c2 = 1;
|
||||
|
||||
select /*+ INDEX(t1 idx1)*/c1, c2, c3, r1, r2, v1 from t1;
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn1;
|
||||
SAVEPOINT p1;
|
||||
|
||||
delete from t1 where c2 = 1;
|
||||
select /*+ INDEX(t1 idx1)*/c1, c2, c3, r1, r2, v1 from t1;
|
||||
|
||||
insert into t1(c1, c2, c3, v1) values(1, 1, "c300000000000001", "v19999999");
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn1;
|
||||
ROLLBACK TO SAVEPOINT p1;
|
||||
update t1 set r2 = 77 where c1 = 1 and c2 = 1;
|
||||
|
||||
connection conn0;
|
||||
alter system minor freeze tenant = sys;
|
||||
alter system minor freeze tenant = all_user;
|
||||
alter system minor freeze tenant = all_meta;
|
||||
--source mysql_test/include/wait_minor_merge.inc
|
||||
|
||||
connection conn1;
|
||||
commit;
|
||||
|
||||
select /*+ INDEX(t1 idx1)*/c1, c2, c3, r1, r2, v1 from t1;
|
||||
select * from t1;
|
||||
|
||||
drop table t1;
|
||||
alter system set minor_compact_trigger = 2;
|
||||
Reference in New Issue
Block a user