mark some file to been opensource for ce-farm

This commit is contained in:
niyuhang
2023-11-15 11:44:43 +00:00
committed by ob-robot
parent 4900683cff
commit c8ace58297
685 changed files with 1080566 additions and 111051 deletions

View File

@ -0,0 +1,28 @@
set SESSION ob_query_timeout = 600 * 1000 * 1000;
set SESSION ob_trx_timeout = 600 * 1000 * 1000;
set SESSION ob_trx_idle_timeout = 600 * 1000 * 1000;
set SESSION ob_query_timeout = 600 * 1000 * 1000;
set SESSION ob_trx_timeout = 600 * 1000 * 1000;
set SESSION ob_trx_idle_timeout = 600 * 1000 * 1000;
alter system set minor_compact_trigger = 10;
drop table if exists test_big_uncommitted_trans_t;
create table test_big_uncommitted_trans_t(i int primary key, c1 char(30), c256 char(255), dt datetime(6), d datetime(6));
select * from test_big_uncommitted_trans_t where i = 999;
i c1 c256 dt d
commit;
select * from test_big_uncommitted_trans_t where i = 1999;
i c1 c256 dt d
1999 update_1999 1999 2012-10-10 12:00:00.000000 2012-10-10 00:00:00.000000
select count(*) from test_big_uncommitted_trans_t;
count(*)
6000
select * from test_big_uncommitted_trans_t where i = 999;
i c1 c256 dt d
999 update_999 999 2012-10-10 12:00:00.000000 2012-10-10 00:00:00.000000
begin;
alter system set minor_compact_trigger = 1;
commit;
select * from test_big_uncommitted_trans_t where i = 999;
i c1 c256 dt d
drop table test_big_uncommitted_trans_t;
alter system set minor_compact_trigger = 2;

View File

@ -0,0 +1,86 @@
set SESSION ob_query_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_idle_timeout = 60 * 1000 * 1000;
set SESSION ob_query_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_idle_timeout = 60 * 1000 * 1000;
alter system set minor_compact_trigger = 10;
drop table if exists test_commit_after_minor_merge_t;
create table test_commit_after_minor_merge_t(c1 int primary key, c2 int);
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);
commit;
select * from test_commit_after_minor_merge_t;
c1 c2
0 10
3 3
1
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);
commit;
2
select * from test_commit_after_minor_merge_t;
c1 c2
0 10
1 1
2 2
3 3
4 4
alter system major freeze tenant = sys;
alter system major freeze tenant = all_user;
alter system major freeze tenant = all_meta;
select * from test_commit_after_minor_merge_t;
c1 c2
0 10
1 1
2 2
3 3
4 4
insert into test_commit_after_minor_merge_t values (5,5);
insert into test_commit_after_minor_merge_t values (6,6);
delete from test_commit_after_minor_merge_t where c1 <= 2;
alter system major freeze tenant = sys;
alter system major freeze tenant = all_user;
alter system major freeze tenant = all_meta;
select * from test_commit_after_minor_merge_t;
c1 c2
3 3
4 4
5 5
6 6
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;
delete from test_commit_after_minor_merge_t where c1 = 5;
alter system set minor_compact_trigger = 1;
select * from test_commit_after_minor_merge_t;
c1 c2
3 3
4 4
6 60
7 7
rollback;
select * from test_commit_after_minor_merge_t;
c1 c2
3 3
4 4
5 5
6 6
select * from test_commit_after_minor_merge_t;
c1 c2
3 3
4 4
5 5
6 6
select * from test_commit_after_minor_merge_t;
c1 c2
3 3
4 4
5 5
6 6
drop table test_commit_after_minor_merge_t;
alter system set minor_compact_trigger = 2;

View File

@ -0,0 +1,132 @@
set SESSION ob_query_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_idle_timeout = 60 * 1000 * 1000;
set SESSION ob_query_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_idle_timeout = 60 * 1000 * 1000;
alter system set minor_compact_trigger = 10;
drop table if exists test_delete_uncommitted_data;
create table test_delete_uncommitted_data(num int, str varchar(50), tag int);
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);
delete from test_delete_uncommitted_data where tag = 1;
select * from test_delete_uncommitted_data;
num str tag
select * from test_delete_uncommitted_data;
num str tag
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);
alter system set minor_compact_trigger = 1;
select * from test_delete_uncommitted_data;
num str tag
select * from test_delete_uncommitted_data;
num str tag
100 Hello OceanBase & Happy New Year 1
99 Hello OceanBase & Happy New Year 1
98 Hello OceanBase & Happy New Year 1
97 Hello OceanBase & Happy New Year 1
96 Hello OceanBase & Happy New Year 1
95 Hello OceanBase & Happy New Year 1
94 Hello OceanBase & Happy New Year 1
93 Hello OceanBase & Happy New Year 1
92 Hello OceanBase & Happy New Year 1
91 Hello OceanBase & Happy New Year 1
90 Hello OceanBase & Happy New Year 1
89 Hello OceanBase & Happy New Year 1
88 Hello OceanBase & Happy New Year 1
87 Hello OceanBase & Happy New Year 1
86 Hello OceanBase & Happy New Year 1
85 Hello OceanBase & Happy New Year 1
84 Hello OceanBase & Happy New Year 1
83 Hello OceanBase & Happy New Year 1
82 Hello OceanBase & Happy New Year 1
81 Hello OceanBase & Happy New Year 1
80 Hello OceanBase & Happy New Year 1
50 Hello OceanBase & Happy New Year 1
49 Hello OceanBase & Happy New Year 1
48 Hello OceanBase & Happy New Year 1
47 Hello OceanBase & Happy New Year 1
46 Hello OceanBase & Happy New Year 1
45 Hello OceanBase & Happy New Year 1
44 Hello OceanBase & Happy New Year 1
43 Hello OceanBase & Happy New Year 1
42 Hello OceanBase & Happy New Year 1
41 Hello OceanBase & Happy New Year 1
40 Hello OceanBase & Happy New Year 1
update test_delete_uncommitted_data set tag = num + tag where num % 2 = 1;
delete from test_delete_uncommitted_data where tag != 1;
commit;
select * from test_delete_uncommitted_data;
num str tag
100 Hello OceanBase & Happy New Year 1
98 Hello OceanBase & Happy New Year 1
96 Hello OceanBase & Happy New Year 1
94 Hello OceanBase & Happy New Year 1
92 Hello OceanBase & Happy New Year 1
90 Hello OceanBase & Happy New Year 1
88 Hello OceanBase & Happy New Year 1
86 Hello OceanBase & Happy New Year 1
84 Hello OceanBase & Happy New Year 1
82 Hello OceanBase & Happy New Year 1
80 Hello OceanBase & Happy New Year 1
50 Hello OceanBase & Happy New Year 1
48 Hello OceanBase & Happy New Year 1
46 Hello OceanBase & Happy New Year 1
44 Hello OceanBase & Happy New Year 1
42 Hello OceanBase & Happy New Year 1
40 Hello OceanBase & Happy New Year 1
select count(*) from test_delete_uncommitted_data;
count(*)
17
drop table test_delete_uncommitted_data;
alter system set minor_compact_trigger = 2;

View File

@ -0,0 +1,53 @@
set SESSION ob_query_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_idle_timeout = 60 * 1000 * 1000;
set SESSION ob_query_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_idle_timeout = 60 * 1000 * 1000;
drop table if exists test_uncommitted_trx_minor_merge;
create table test_uncommitted_trx_minor_merge(c1 int primary key, c2 int);
insert into test_uncommitted_trx_minor_merge values (1,1);
select * from test_uncommitted_trx_minor_merge;
c1 c2
1 1
insert into test_uncommitted_trx_minor_merge values (2,2);
begin;
insert into test_uncommitted_trx_minor_merge values (3,3);
update test_uncommitted_trx_minor_merge set c2 = 10 where c1 = 1;
commit;
select * from test_uncommitted_trx_minor_merge;
c1 c2
1 10
2 2
3 3
2
begin;
insert into test_uncommitted_trx_minor_merge values (4,4);
commit;
select * from test_uncommitted_trx_minor_merge;
c1 c2
1 10
2 2
3 3
4 4
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;
commit;
select * from test_uncommitted_trx_minor_merge;
c1 c2
1 10
2 100
3 3
4 4
5 5
select * from test_uncommitted_trx_minor_merge;
c1 c2
1 10
2 100
3 3
4 4
5 5
alter system set undo_retention = 1800;
drop table test_uncommitted_trx_minor_merge;

View File

@ -0,0 +1,21 @@
set SESSION ob_query_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_idle_timeout = 60 * 1000 * 1000;
drop table if exists test_get_uncommitted_row_with_fuse_row_t;
create table test_get_uncommitted_row_with_fuse_row_t(a int primary key, b int, unique key u_idx(b));
insert into test_get_uncommitted_row_with_fuse_row_t (a, b) values (1, 10), (2, 20), (3, 30);
begin;
select * from test_get_uncommitted_row_with_fuse_row_t where a = 2 for update;
a b
2 20
update test_get_uncommitted_row_with_fuse_row_t set b = b + 1 where a = 2;
update test_get_uncommitted_row_with_fuse_row_t set b = 30 where a = 2;
ERROR 23000: Duplicate entry '30' for key 'u_idx'
select * from test_get_uncommitted_row_with_fuse_row_t where a = 2;
a b
2 20
commit;
select * from test_get_uncommitted_row_with_fuse_row_t where a = 2;
a b
2 21
drop table test_get_uncommitted_row_with_fuse_row_t;

View File

@ -0,0 +1,40 @@
set SESSION ob_query_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_idle_timeout = 60 * 1000 * 1000;
set SESSION ob_query_timeout = 1 * 1000 * 1000;
set SESSION ob_trx_timeout = 1 * 1000 * 1000;
set SESSION ob_trx_idle_timeout = 1 * 1000 * 1000;
drop table if exists test_lock_row_in_minor_t;
create table test_lock_row_in_minor_t(a int primary key, b int);
insert into test_lock_row_in_minor_t value(1, 1);
alter system set minor_compact_trigger = 10;
begin;
select * from test_lock_row_in_minor_t where a = 1 for update;
a b
1 1
insert into test_lock_row_in_minor_t value(2, 2);
alter system set minor_compact_trigger = 1;
update test_lock_row_in_minor_t set b = 10 where a = 1;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
select * from test_lock_row_in_minor_t;
a b
1 1
update test_lock_row_in_minor_t set b = 10 where a = 1;
select * from test_lock_row_in_minor_t;
a b
1 10
2 2
commit;
update test_lock_row_in_minor_t set b = 100 where a = 1;
select * from test_lock_row_in_minor_t;
a b
1 100
2 2
begin;
update test_lock_row_in_minor_t set b = 200 where a = 1;
select * from test_lock_row_in_minor_t;
a b
1 200
2 2
drop table test_lock_row_in_minor_t;
alter system set minor_compact_trigger = 2;

View File

@ -0,0 +1,32 @@
set SESSION ob_query_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_idle_timeout = 60 * 1000 * 1000;
set SESSION ob_query_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_idle_timeout = 60 * 1000 * 1000;
drop table if exists test_lock_uncommitted_data_t;
create table test_lock_uncommitted_data_t(a int primary key, b int);
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);
update test_lock_uncommitted_data_t set b = 10 where a = 3;
select * from test_lock_uncommitted_data_t;
a b
update test_lock_uncommitted_data_t set b = 10 where a = 3;
select * from test_lock_uncommitted_data_t;
a b
1 1
2 2
3 10
4 4
5 5
6 6
commit;
update test_lock_uncommitted_data_t set b = 100 where a = 3;
begin;
update test_lock_uncommitted_data_t set b = 200 where a = 3;
drop table test_lock_uncommitted_data_t;

View File

@ -0,0 +1,23 @@
set GLOBAL ob_query_timeout = 1000000000000;
set GLOBAL ob_trx_timeout = 10000000000000;
set GLOBAL ob_trx_idle_timeout = 10000000000;
alter system set minor_compact_trigger = 10;
drop table if exists same_sql_sequence;
create table same_sql_sequence(num int primary key, str varchar(50), tag int);
create index index_num_tag on same_sql_sequence(tag);
begin;
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
update same_sql_sequence set tag = 0, str = 'Hello OceanBase';
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
select /*+ index(same_sql_sequence index_num_tag) */ *from same_sql_sequence where tag = 0;
num str tag
1000 Hello OceanBase 0
1001 Hello OceanBase 0
1002 Hello OceanBase 0
commit;
drop table same_sql_sequence;
alter system set minor_compact_trigger = 2;

View File

@ -0,0 +1,36 @@
set SESSION ob_query_timeout = 600 * 1000 * 1000;
set SESSION ob_trx_timeout = 600 * 1000 * 1000;
set SESSION ob_trx_idle_timeout = 600 * 1000 * 1000;
set SESSION ob_query_timeout = 600 * 1000 * 1000;
set SESSION ob_trx_timeout = 600 * 1000 * 1000;
set SESSION ob_trx_idle_timeout = 600 * 1000 * 1000;
alter system set minor_compact_trigger = 10;
begin;
update test_mix_dml_table set v2 = 'QQQQQQQQQQQQQQQQQQQQQQQQQQ';
select count(*) from test_mix_dml_table where v2 = 'QQQQQQQQQQQQQQQQQQQQQQQQQQ';
count(*)
2000
select * from test_mix_dml_table;
i1 v2 i3 i4 d4 i5
alter system set minor_compact_trigger = 1;
select * from test_mix_dml_table;
i1 v2 i3 i4 d4 i5
select count(*) from test_mix_dml_table;
count(*)
1000
select count(*) from test_mix_dml_table;
count(*)
1000
select count(*) from test_mix_dml_table;
count(*)
1000
select count(*) from test_mix_dml_table;
count(*)
1000
select count(*) from test_mix_dml_table;
count(*)
1000
commit;
select count(*) from test_mix_dml_table where i4 = 25 * i1 * power(2, 3) and v2 != 'QQQQQQQQQQQQQQQQQQQQQQQQQQ';
count(*)
0

View File

@ -0,0 +1,30 @@
set SESSION ob_query_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_idle_timeout = 60 * 1000 * 1000;
set SESSION ob_query_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_idle_timeout = 60 * 1000 * 1000;
drop table if exists test_multi_get_uncommitted_row_t;
create table test_multi_get_uncommitted_row_t(a int primary key, b int, key ib(b));
begin;
insert into test_multi_get_uncommitted_row_t value(1, 1);
insert into test_multi_get_uncommitted_row_t value(2, 2);
select * from test_multi_get_uncommitted_row_t where a in (1,2);
a b
select * from test_multi_get_uncommitted_row_t where a in (1, 2);
a b
1 1
2 2
select * from test_multi_get_uncommitted_row_t where a in (1,2);
a b
update test_multi_get_uncommitted_row_t set b = 10 where a = 1;
commit;
select * from test_multi_get_uncommitted_row_t where a in (1,2);
a b
1 10
2 2
select * from test_multi_get_uncommitted_row_t where a in (1,2);
a b
1 10
2 2
drop table test_multi_get_uncommitted_row_t;

View File

@ -0,0 +1,244 @@
set SESSION ob_query_timeout = 600 * 1000 * 1000;
set SESSION ob_trx_timeout = 600 * 1000 * 1000;
set SESSION ob_trx_idle_timeout = 600 * 1000 * 1000;
set SESSION ob_query_timeout = 600 * 1000 * 1000;
set SESSION ob_trx_timeout = 600 * 1000 * 1000;
set SESSION ob_trx_idle_timeout = 600 * 1000 * 1000;
alter system set minor_compact_trigger = 10;
drop table if exists test_multi_minor_merge_t;
create table test_multi_minor_merge_t(num int, str varchar(50), tag int);
begin;
insert into test_multi_minor_merge_t values(200, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(199, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(198, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(197, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(196, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(195, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(194, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(193, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(192, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(191, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(190, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(189, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(188, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(187, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(186, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(185, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(184, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(183, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(182, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(181, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(180, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(179, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(178, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(177, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(176, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(175, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(174, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(173, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(172, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(171, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(170, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(169, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(168, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(167, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(166, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(165, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(164, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(163, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(162, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(161, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(160, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(159, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(158, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(157, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(156, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(155, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(154, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(153, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(152, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(151, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(150, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(149, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(148, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(147, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(146, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(145, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(144, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(143, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(142, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(141, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(140, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(139, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(138, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(137, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(136, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(135, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(134, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(133, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(132, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(131, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(130, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(129, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(128, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(127, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(126, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(125, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(124, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(123, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(122, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(121, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(120, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(119, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(118, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(117, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(116, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(115, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(114, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(113, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(112, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(111, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(110, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(109, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(108, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(107, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(106, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(105, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(104, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(103, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(102, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(101, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(100, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(99, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(98, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(97, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(96, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(95, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(94, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(93, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(92, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(91, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(90, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(89, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(88, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(87, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(86, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(85, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(84, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(83, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(82, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(81, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(80, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(79, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(78, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(77, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(76, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(75, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(74, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(73, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(72, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(71, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(70, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(69, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(68, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(67, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(66, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(65, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(64, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(63, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(62, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(61, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(60, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(59, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(58, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(57, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(56, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(55, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(54, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(53, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(52, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(51, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(50, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(49, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(48, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(47, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(46, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(45, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(44, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(43, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(42, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(41, 'Hello OceanBase & Happy New Year', 1);
alter system set minor_compact_trigger = 1;
select * from test_multi_minor_merge_t;
num str tag
select * from test_multi_minor_merge_t where num > 190;
num str tag
200 Hello OceanBase & Happy New Year 1
199 Hello OceanBase & Happy New Year 1
198 Hello OceanBase & Happy New Year 1
197 Hello OceanBase & Happy New Year 1
196 Hello OceanBase & Happy New Year 1
195 Hello OceanBase & Happy New Year 1
194 Hello OceanBase & Happy New Year 1
193 Hello OceanBase & Happy New Year 1
192 Hello OceanBase & Happy New Year 1
191 Hello OceanBase & Happy New Year 1
insert into test_multi_minor_merge_t values(40, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(39, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(38, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(37, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(36, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(35, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(34, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(33, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(32, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(31, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(30, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(29, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(28, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(27, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(26, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(25, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(24, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(23, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(22, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(21, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(20, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(19, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(18, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(17, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(16, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(15, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(14, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(13, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(12, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(11, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(10, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(9, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(8, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(7, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(6, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(5, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(4, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(3, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(2, 'Hello OceanBase & Happy New Year', 1);
insert into test_multi_minor_merge_t values(1, 'Hello OceanBase & Happy New Year', 1);
alter system minor freeze;
commit;
select * from test_multi_minor_merge_t where num > 190;
num str tag
200 Hello OceanBase & Happy New Year 1
199 Hello OceanBase & Happy New Year 1
198 Hello OceanBase & Happy New Year 1
197 Hello OceanBase & Happy New Year 1
196 Hello OceanBase & Happy New Year 1
195 Hello OceanBase & Happy New Year 1
194 Hello OceanBase & Happy New Year 1
193 Hello OceanBase & Happy New Year 1
192 Hello OceanBase & Happy New Year 1
191 Hello OceanBase & Happy New Year 1
select count(*) from test_multi_minor_merge_t;
count(*)
200
drop table test_multi_minor_merge_t;
alter system set minor_compact_trigger = 2;

View File

@ -0,0 +1,41 @@
drop table if exists t1;
create table t1(a int);
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);
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;
select * from t1;
a
select * from t1;
a
1
2
3
4
5
6
commit;
select * from t1;
a
1
2
3
4
5
6
select * from t1;
a
1
2
3
4
5
6
drop table t1;

View File

@ -0,0 +1,99 @@
set GLOBAL ob_query_timeout = 1000000000000;
set GLOBAL ob_trx_timeout = 1000000000000;
drop table if exists query_uncommitted_data2;
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;
id k
1 1
2 2
3 3
4 4
5 5
select * from query_uncommitted_data2 where id=3;
id k
3 3
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
select * from query_uncommitted_data2;
id k
1 1
2 2
select * from query_uncommitted_data2 where id=1;
id k
1 1
select * from query_uncommitted_data2 where id=3;
id k
select * from query_uncommitted_data2 where id in (1,3);
id k
1 1
3 3
commit;
select * from query_uncommitted_data2 where id=5;
id k
5 5
select * from query_uncommitted_data2;
id k
1 1
2 2
3 3
4 4
5 5
select * from query_uncommitted_data2 where id=5;
id k
5 5
select * from query_uncommitted_data2;
id k
1 1
2 2
3 3
4 4
5 5
insert into query_uncommitted_data2 values(5,5);
ERROR 23000: Duplicate entry '5' for key 'PRIMARY'
begin;
insert into query_uncommitted_data2 values(6,6);
update query_uncommitted_data2 set k=10 where id=5;
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
set ob_query_timeout = 1000000;
set ob_trx_timeout = 1000000;
insert into query_uncommitted_data2 values (6, 60);
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
update query_uncommitted_data2 set k=10 where id=6;
update query_uncommitted_data2 set k=10 where id=5;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
select * from query_uncommitted_data2;
id k
1 1
2 2
3 3
4 4
5 5
insert into query_uncommitted_data2 values(6,6);
ERROR 23000: Duplicate entry '6' for key 'PRIMARY'
select * from query_uncommitted_data2;
id k
1 1
2 2
3 3
4 4
5 10
6 6
commit;
select * from query_uncommitted_data2;
id k
1 1
2 2
3 3
4 4
5 10
6 6
drop table query_uncommitted_data2;

View File

@ -0,0 +1,19 @@
set GLOBAL ob_query_timeout = 1000000000000;
set GLOBAL ob_trx_timeout = 1000000000000;
alter system set minor_compact_trigger = 10;
drop table if exists test_uncommitted_trx_minor_merge;
create table test_uncommitted_trx_minor_merge(c1 int primary key, c2 int, c3 varchar(2048)) compression "none";
insert into test_uncommitted_trx_minor_merge values (3001, 3001, "aaaa");
alter system minor freeze;
insert into test_uncommitted_trx_minor_merge values (3002, 3002, "aaaa");
insert into test_uncommitted_trx_minor_merge values (4000,4000,"a");
alter system minor freeze;
alter system set minor_compact_trigger = 1;
select count(1) from test_uncommitted_trx_minor_merge;
count(1)
3003
select count(1) from test_uncommitted_trx_minor_merge;
count(1)
3003
drop table test_uncommitted_trx_minor_merge;
alter system set minor_compact_trigger = 2;

View File

@ -0,0 +1,172 @@
set SESSION ob_query_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_idle_timeout = 60 * 1000 * 1000;
set SESSION ob_query_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_timeout = 60 * 1000 * 1000;
set SESSION ob_trx_idle_timeout = 60 * 1000 * 1000;
alter system set minor_compact_trigger = 10;
drop table if exists test_rollback_sql_sequence_t;
create table test_rollback_sql_sequence_t(num int, str varchar(50), tag int);
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);
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);
SAVEPOINT p2;
update test_rollback_sql_sequence_t set tag = (num + tag) * 10;
alter system set minor_compact_trigger = 1;
select * from test_rollback_sql_sequence_t;
num str tag
100 Hello OceanBase & Happy New Year 1010
99 Hello OceanBase & Happy New Year 1000
98 Hello OceanBase & Happy New Year 990
97 Hello OceanBase & Happy New Year 980
96 Hello OceanBase & Happy New Year 970
95 Hello OceanBase & Happy New Year 960
94 Hello OceanBase & Happy New Year 950
93 Hello OceanBase & Happy New Year 940
92 Hello OceanBase & Happy New Year 930
91 Hello OceanBase & Happy New Year 920
90 Hello OceanBase & Happy New Year 910
89 Hello OceanBase & Happy New Year 900
88 Hello OceanBase & Happy New Year 890
87 Hello OceanBase & Happy New Year 880
86 Hello OceanBase & Happy New Year 870
85 Hello OceanBase & Happy New Year 860
84 Hello OceanBase & Happy New Year 850
83 Hello OceanBase & Happy New Year 840
82 Hello OceanBase & Happy New Year 830
81 Hello OceanBase & Happy New Year 820
80 Hello OceanBase & Happy New Year 810
5 Hello OceanBase & Happy New Year 70
4 Hello OceanBase & Happy New Year 60
3 Hello OceanBase & Happy New Year 50
2 Hello OceanBase & Happy New Year 40
1 Hello OceanBase & Happy New Year 30
ROLLBACK TO SAVEPOINT p2;
select * from test_rollback_sql_sequence_t;
num str tag
100 Hello OceanBase & Happy New Year 1
99 Hello OceanBase & Happy New Year 1
98 Hello OceanBase & Happy New Year 1
97 Hello OceanBase & Happy New Year 1
96 Hello OceanBase & Happy New Year 1
95 Hello OceanBase & Happy New Year 1
94 Hello OceanBase & Happy New Year 1
93 Hello OceanBase & Happy New Year 1
92 Hello OceanBase & Happy New Year 1
91 Hello OceanBase & Happy New Year 1
90 Hello OceanBase & Happy New Year 1
89 Hello OceanBase & Happy New Year 1
88 Hello OceanBase & Happy New Year 1
87 Hello OceanBase & Happy New Year 1
86 Hello OceanBase & Happy New Year 1
85 Hello OceanBase & Happy New Year 1
84 Hello OceanBase & Happy New Year 1
83 Hello OceanBase & Happy New Year 1
82 Hello OceanBase & Happy New Year 1
81 Hello OceanBase & Happy New Year 1
80 Hello OceanBase & Happy New Year 1
5 Hello OceanBase & Happy New Year 2
4 Hello OceanBase & Happy New Year 2
3 Hello OceanBase & Happy New Year 2
2 Hello OceanBase & Happy New Year 2
1 Hello OceanBase & Happy New Year 2
ROLLBACK TO SAVEPOINT p1;
select * from test_rollback_sql_sequence_t;
num str tag
100 Hello OceanBase & Happy New Year 1
99 Hello OceanBase & Happy New Year 1
98 Hello OceanBase & Happy New Year 1
97 Hello OceanBase & Happy New Year 1
96 Hello OceanBase & Happy New Year 1
95 Hello OceanBase & Happy New Year 1
94 Hello OceanBase & Happy New Year 1
93 Hello OceanBase & Happy New Year 1
92 Hello OceanBase & Happy New Year 1
91 Hello OceanBase & Happy New Year 1
90 Hello OceanBase & Happy New Year 1
89 Hello OceanBase & Happy New Year 1
88 Hello OceanBase & Happy New Year 1
87 Hello OceanBase & Happy New Year 1
86 Hello OceanBase & Happy New Year 1
85 Hello OceanBase & Happy New Year 1
84 Hello OceanBase & Happy New Year 1
83 Hello OceanBase & Happy New Year 1
82 Hello OceanBase & Happy New Year 1
81 Hello OceanBase & Happy New Year 1
80 Hello OceanBase & Happy New Year 1
select * from test_rollback_sql_sequence_t;
num str tag
commit;
select * from test_rollback_sql_sequence_t;
num str tag
100 Hello OceanBase & Happy New Year 1
99 Hello OceanBase & Happy New Year 1
98 Hello OceanBase & Happy New Year 1
97 Hello OceanBase & Happy New Year 1
96 Hello OceanBase & Happy New Year 1
95 Hello OceanBase & Happy New Year 1
94 Hello OceanBase & Happy New Year 1
93 Hello OceanBase & Happy New Year 1
92 Hello OceanBase & Happy New Year 1
91 Hello OceanBase & Happy New Year 1
90 Hello OceanBase & Happy New Year 1
89 Hello OceanBase & Happy New Year 1
88 Hello OceanBase & Happy New Year 1
87 Hello OceanBase & Happy New Year 1
86 Hello OceanBase & Happy New Year 1
85 Hello OceanBase & Happy New Year 1
84 Hello OceanBase & Happy New Year 1
83 Hello OceanBase & Happy New Year 1
82 Hello OceanBase & Happy New Year 1
81 Hello OceanBase & Happy New Year 1
80 Hello OceanBase & Happy New Year 1
select * from test_rollback_sql_sequence_t;
num str tag
100 Hello OceanBase & Happy New Year 1
99 Hello OceanBase & Happy New Year 1
98 Hello OceanBase & Happy New Year 1
97 Hello OceanBase & Happy New Year 1
96 Hello OceanBase & Happy New Year 1
95 Hello OceanBase & Happy New Year 1
94 Hello OceanBase & Happy New Year 1
93 Hello OceanBase & Happy New Year 1
92 Hello OceanBase & Happy New Year 1
91 Hello OceanBase & Happy New Year 1
90 Hello OceanBase & Happy New Year 1
89 Hello OceanBase & Happy New Year 1
88 Hello OceanBase & Happy New Year 1
87 Hello OceanBase & Happy New Year 1
86 Hello OceanBase & Happy New Year 1
85 Hello OceanBase & Happy New Year 1
84 Hello OceanBase & Happy New Year 1
83 Hello OceanBase & Happy New Year 1
82 Hello OceanBase & Happy New Year 1
81 Hello OceanBase & Happy New Year 1
80 Hello OceanBase & Happy New Year 1
drop table test_rollback_sql_sequence_t;
alter system set minor_compact_trigger = 2;

View File

@ -0,0 +1,62 @@
set GLOBAL ob_query_timeout = 1000000000000;
set GLOBAL ob_trx_timeout = 10000000000000;
set GLOBAL ob_trx_idle_timeout = 10000000000;
alter system set minor_compact_trigger = 10;
drop table if exists t1;
create table t1(c1 int primary key, c2 varchar(50), c3 int, c4 datetime(6), c5 datetime(6)) table_mode = 'queuing';
begin;
SAVEPOINT p0;
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
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');
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
SAVEPOINT p2;
update t1 set c3 = c1;
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
SAVEPOINT p3;
update t1 set c2 = 'rollback rooooooooll';
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
select count(*) from t1 where c2 like '%oceanbase%';
count(*)
0
ROLLBACK TO SAVEPOINT p3;
select count(*) from t1 where c2 like '%oceanbase%';
count(*)
35
select count(*) from t1 where c3 = c1;
count(*)
35
ROLLBACK TO SAVEPOINT p2;
select count(*) from t1 where c3 = c1;
count(*)
1
ROLLBACK TO SAVEPOINT p1;
select count(*) from t1;
count(*)
30
ROLLBACK TO SAVEPOINT p0;
select count(*) from t1;
count(*)
0
select * from t1;
c1 c2 c3 c4 c5
commit;
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
select * from t1;
c1 c2 c3 c4 c5
drop table t1;
alter system set minor_compact_trigger = 2;

View File

@ -0,0 +1,49 @@
set GLOBAL ob_query_timeout = 1000000000000;
set GLOBAL ob_trx_timeout = 10000000000000;
set GLOBAL ob_trx_idle_timeout = 10000000000;
alter system set minor_compact_trigger = 10;
drop table if exists t1;
create table t1(c1 int primary key, c2 varchar(50), c3 int, c4 datetime(6), c5 datetime(6)) table_mode = 'queuing';
begin;
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
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');
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
select count(*) from t1;
count(*)
35
ROLLBACK TO SAVEPOINT p1;
select count(*) from t1 where c1 < 1000;
count(*)
0
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
select count(*) from t1;
count(*)
40
ROLLBACK TO SAVEPOINT p1;
select count(*) from t1;
count(*)
30
update t1 set c3 = c1 * c3;
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
select count(*) from t1 where c3 % c1 = 0;
count(*)
40
ROLLBACK TO SAVEPOINT p1;
select count(*) from t1 where c3 % c1 = 0;
count(*)
1
drop table t1;
alter system set minor_compact_trigger = 2;

View File

@ -0,0 +1,58 @@
set GLOBAL ob_query_timeout = 1000000000000;
set GLOBAL ob_trx_timeout = 10000000000000;
set GLOBAL ob_trx_idle_timeout = 10000000000;
alter system set syslog_io_bandwidth_limit = '100G';
alter system set minor_compact_trigger = 10;
drop table if exists t1;
create table t1(num int, str varchar(2000), tag int);
insert into t1 values(1, repeat('Hello OceanBase', 50), 1);
begin;
SAVEPOINT p1;
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
select * from t1 where num = 1 for update nowait;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
ROLLBACK TO SAVEPOINT p1;
select * from t1 where num = 1 for update nowait;
num str tag
1 Hello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBaseHello OceanBase 1
update t1 set str = repeat('Hello OceanBase9', 50) where num = 1;
SAVEPOINT p2;
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
select * from t1 where num = 1 for update nowait;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
ROLLBACK TO SAVEPOINT p2;
select * from t1 where num = 1 for update nowait;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
commit;
select * from t1 where num = 1 for update nowait;
num str tag
1 Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9 1
begin;
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
select * from t1 where num = 1 for update nowait;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
rollback;
select * from t1 where num = 1 for update nowait;
num str tag
1 Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9Hello OceanBase9 1
begin;
update t1 set str = repeat('Hello OceanBase0.', 50) where num = 1;
select * from t1 where num = 1 for update nowait;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
select * from t1 where num = 1 for update nowait;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
commit;
select * from t1 where num = 1 for update nowait;
num str tag
1 Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0.Hello OceanBase0. 1
drop table t1;
alter system set minor_compact_trigger = 2;

View File

@ -0,0 +1,203 @@
set GLOBAL ob_query_timeout = 1000000000000;
set GLOBAL ob_trx_timeout = 10000000000000;
set GLOBAL ob_trx_idle_timeout = 10000000000;
alter system set minor_compact_trigger = 10;
drop table if exists test_rollback_trans_t;
create table test_rollback_trans_t(num int, str varchar(50), tag int);
begin;
insert into test_rollback_trans_t value(1, 'Hello OceanBase & Happy New Year', 1);
insert into test_rollback_trans_t value(2, 'Hello OceanBase & Happy New Year', 1);
insert into test_rollback_trans_t value(3, 'Hello OceanBase & Happy New Year', 1);
insert into test_rollback_trans_t value(4, 'Hello OceanBase & Happy New Year', 1);
insert into test_rollback_trans_t value(5, 'Hello OceanBase & Happy New Year', 1);
insert into test_rollback_trans_t value(6, 'Hello OceanBase & Happy New Year', 1);
insert into test_rollback_trans_t value(7, 'Hello OceanBase & Happy New Year', 1);
insert into test_rollback_trans_t value(8, 'Hello OceanBase & Happy New Year', 1);
insert into test_rollback_trans_t value(9, 'Hello OceanBase & Happy New Year', 1);
insert into test_rollback_trans_t value(10, 'Hello OceanBase & Happy New Year', 1);
insert into test_rollback_trans_t value(11, 'Hello OceanBase & Happy New Year', 1);
insert into test_rollback_trans_t value(12, 'Hello OceanBase & Happy New Year', 1);
insert into test_rollback_trans_t value(13, 'Hello OceanBase & Happy New Year', 1);
insert into test_rollback_trans_t value(14, 'Hello OceanBase & Happy New Year', 1);
insert into test_rollback_trans_t value(15, 'Hello OceanBase & Happy New Year', 1);
insert into test_rollback_trans_t value(16, 'Hello OceanBase & Happy New Year', 1);
insert into test_rollback_trans_t value(17, 'Hello OceanBase & Happy New Year', 1);
insert into test_rollback_trans_t value(18, 'Hello OceanBase & Happy New Year', 1);
insert into test_rollback_trans_t value(19, 'Hello OceanBase & Happy New Year', 1);
insert into test_rollback_trans_t value(20, 'Hello OceanBase & Happy New Year', 1);
insert into test_rollback_trans_t value(21, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(22, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(23, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(24, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(25, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(26, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(27, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(28, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(29, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(30, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(31, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(32, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(33, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(34, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(35, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(36, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(37, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(38, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(39, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(40, 'Hello OceanBase & Happy New Year', 2);
update test_rollback_trans_t set tag = (num + tag) * 10;
select * from test_rollback_trans_t;
num str tag
select * from test_rollback_trans_t;
num str tag
1 Hello OceanBase & Happy New Year 20
2 Hello OceanBase & Happy New Year 30
3 Hello OceanBase & Happy New Year 40
4 Hello OceanBase & Happy New Year 50
5 Hello OceanBase & Happy New Year 60
6 Hello OceanBase & Happy New Year 70
7 Hello OceanBase & Happy New Year 80
8 Hello OceanBase & Happy New Year 90
9 Hello OceanBase & Happy New Year 100
10 Hello OceanBase & Happy New Year 110
11 Hello OceanBase & Happy New Year 120
12 Hello OceanBase & Happy New Year 130
13 Hello OceanBase & Happy New Year 140
14 Hello OceanBase & Happy New Year 150
15 Hello OceanBase & Happy New Year 160
16 Hello OceanBase & Happy New Year 170
17 Hello OceanBase & Happy New Year 180
18 Hello OceanBase & Happy New Year 190
19 Hello OceanBase & Happy New Year 200
20 Hello OceanBase & Happy New Year 210
21 Hello OceanBase & Happy New Year 230
22 Hello OceanBase & Happy New Year 240
23 Hello OceanBase & Happy New Year 250
24 Hello OceanBase & Happy New Year 260
25 Hello OceanBase & Happy New Year 270
26 Hello OceanBase & Happy New Year 280
27 Hello OceanBase & Happy New Year 290
28 Hello OceanBase & Happy New Year 300
29 Hello OceanBase & Happy New Year 310
30 Hello OceanBase & Happy New Year 320
31 Hello OceanBase & Happy New Year 330
32 Hello OceanBase & Happy New Year 340
33 Hello OceanBase & Happy New Year 350
34 Hello OceanBase & Happy New Year 360
35 Hello OceanBase & Happy New Year 370
36 Hello OceanBase & Happy New Year 380
37 Hello OceanBase & Happy New Year 390
38 Hello OceanBase & Happy New Year 400
39 Hello OceanBase & Happy New Year 410
40 Hello OceanBase & Happy New Year 420
alter system set minor_compact_trigger = 1;
select * from test_rollback_trans_t;
num str tag
1 Hello OceanBase & Happy New Year 20
2 Hello OceanBase & Happy New Year 30
3 Hello OceanBase & Happy New Year 40
4 Hello OceanBase & Happy New Year 50
5 Hello OceanBase & Happy New Year 60
6 Hello OceanBase & Happy New Year 70
7 Hello OceanBase & Happy New Year 80
8 Hello OceanBase & Happy New Year 90
9 Hello OceanBase & Happy New Year 100
10 Hello OceanBase & Happy New Year 110
11 Hello OceanBase & Happy New Year 120
12 Hello OceanBase & Happy New Year 130
13 Hello OceanBase & Happy New Year 140
14 Hello OceanBase & Happy New Year 150
15 Hello OceanBase & Happy New Year 160
16 Hello OceanBase & Happy New Year 170
17 Hello OceanBase & Happy New Year 180
18 Hello OceanBase & Happy New Year 190
19 Hello OceanBase & Happy New Year 200
20 Hello OceanBase & Happy New Year 210
21 Hello OceanBase & Happy New Year 230
22 Hello OceanBase & Happy New Year 240
23 Hello OceanBase & Happy New Year 250
24 Hello OceanBase & Happy New Year 260
25 Hello OceanBase & Happy New Year 270
26 Hello OceanBase & Happy New Year 280
27 Hello OceanBase & Happy New Year 290
28 Hello OceanBase & Happy New Year 300
29 Hello OceanBase & Happy New Year 310
30 Hello OceanBase & Happy New Year 320
31 Hello OceanBase & Happy New Year 330
32 Hello OceanBase & Happy New Year 340
33 Hello OceanBase & Happy New Year 350
34 Hello OceanBase & Happy New Year 360
35 Hello OceanBase & Happy New Year 370
36 Hello OceanBase & Happy New Year 380
37 Hello OceanBase & Happy New Year 390
38 Hello OceanBase & Happy New Year 400
39 Hello OceanBase & Happy New Year 410
40 Hello OceanBase & Happy New Year 420
ROLLBACK;
select * from test_rollback_trans_t;
num str tag
select * from test_rollback_trans_t;
num str tag
insert into test_rollback_trans_t value(41, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(42, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(43, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(44, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(45, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(46, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(47, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(48, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(49, 'Hello OceanBase & Happy New Year', 2);
insert into test_rollback_trans_t value(50, 'Hello OceanBase & Happy New Year', 2);
begin;
update test_rollback_trans_t set tag = (num + tag) * 10;
select * from test_rollback_trans_t;
num str tag
41 Hello OceanBase & Happy New Year 2
42 Hello OceanBase & Happy New Year 2
43 Hello OceanBase & Happy New Year 2
44 Hello OceanBase & Happy New Year 2
45 Hello OceanBase & Happy New Year 2
46 Hello OceanBase & Happy New Year 2
47 Hello OceanBase & Happy New Year 2
48 Hello OceanBase & Happy New Year 2
49 Hello OceanBase & Happy New Year 2
50 Hello OceanBase & Happy New Year 2
select * from test_rollback_trans_t;
num str tag
41 Hello OceanBase & Happy New Year 430
42 Hello OceanBase & Happy New Year 440
43 Hello OceanBase & Happy New Year 450
44 Hello OceanBase & Happy New Year 460
45 Hello OceanBase & Happy New Year 470
46 Hello OceanBase & Happy New Year 480
47 Hello OceanBase & Happy New Year 490
48 Hello OceanBase & Happy New Year 500
49 Hello OceanBase & Happy New Year 510
50 Hello OceanBase & Happy New Year 520
ROLLBACK;
select * from test_rollback_trans_t;
num str tag
41 Hello OceanBase & Happy New Year 2
42 Hello OceanBase & Happy New Year 2
43 Hello OceanBase & Happy New Year 2
44 Hello OceanBase & Happy New Year 2
45 Hello OceanBase & Happy New Year 2
46 Hello OceanBase & Happy New Year 2
47 Hello OceanBase & Happy New Year 2
48 Hello OceanBase & Happy New Year 2
49 Hello OceanBase & Happy New Year 2
50 Hello OceanBase & Happy New Year 2
select * from test_rollback_trans_t;
num str tag
41 Hello OceanBase & Happy New Year 2
42 Hello OceanBase & Happy New Year 2
43 Hello OceanBase & Happy New Year 2
44 Hello OceanBase & Happy New Year 2
45 Hello OceanBase & Happy New Year 2
46 Hello OceanBase & Happy New Year 2
47 Hello OceanBase & Happy New Year 2
48 Hello OceanBase & Happy New Year 2
49 Hello OceanBase & Happy New Year 2
50 Hello OceanBase & Happy New Year 2
drop table test_rollback_trans_t;
alter system set minor_compact_trigger = 2;

View File

@ -0,0 +1,52 @@
set GLOBAL ob_query_timeout = 1000000000000;
set GLOBAL ob_trx_timeout = 10000000000000;
set GLOBAL ob_trx_idle_timeout = 10000000000;
drop table if exists t1_fuse;
create table t1_fuse(a int primary key, b int, c int);
insert into t1_fuse values(5, 1, 1);
insert into t1_fuse values(4, 1, 1);
insert into t1_fuse values(3, 1, 1);
insert into t1_fuse values(2, 1, 1);
insert into t1_fuse values(1, 1, 1);
update t1_fuse set b = 2 where a = 2;
update t1_fuse set b = 3 where a = 2;
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
select * from t1_fuse where a = 2;
a b c
2 3 1
set autocommit=0;
begin;
update t1_fuse set c = 2 where a = 2;
select * from t1_fuse where a = 2;
a b c
2 3 2
select * from t1_fuse where a = 2;
a b c
2 3 2
update t1_fuse set c = 3 where a = 2;
select * from t1_fuse where a = 2;
a b c
2 3 3
select * from t1_fuse where a = 2;
a b c
2 3 3
select * from t1_fuse where a = 2;
a b c
2 3 1
rollback;
select * from t1_fuse where a = 2;
a b c
2 3 1
select * from t1_fuse where a = 2;
a b c
2 3 1
select * from t1_fuse order by a asc;
a b c
1 1 1
2 3 1
3 1 1
4 1 1
5 1 1
drop table t1_fuse;

View File

@ -0,0 +1,60 @@
set GLOBAL ob_query_timeout = 1000000000000;
set GLOBAL ob_trx_timeout = 1000000000000;
drop table if exists test_uncommitted_trx_minor_merge;
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);
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
select * from test_uncommitted_trx_minor_merge where a = 1;
a b
select * from test_uncommitted_trx_minor_merge where a = 1;
a b
1 1
select * from test_uncommitted_trx_minor_merge where a = 1;
a b
update test_uncommitted_trx_minor_merge set b = 10 where a = 1;
commit;
select * from test_uncommitted_trx_minor_merge where a = 1;
a b
1 10
select * from test_uncommitted_trx_minor_merge where a = 2;
a b
2 2
select * from test_uncommitted_trx_minor_merge where a = 1;
a b
1 10
select * from test_uncommitted_trx_minor_merge where a = 2;
a b
2 2
insert into test_uncommitted_trx_minor_merge values (3,3);
begin;
select * from test_uncommitted_trx_minor_merge where a = 3 for update;
a b
3 3
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
set ob_query_timeout = 1000000;
set ob_trx_timeout = 1000000;
select * from test_uncommitted_trx_minor_merge where a = 3 for update nowait;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
set ob_query_timeout = 1000000000000;
set ob_trx_timeout = 1000000000000;
select * from test_uncommitted_trx_minor_merge where a = 3;
a b
3 3
update test_uncommitted_trx_minor_merge set b = 30 where a = 3;
select * from test_uncommitted_trx_minor_merge where a = 3;
a b
3 30
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
rollback;
select * from test_uncommitted_trx_minor_merge where a = 3;
a b
3 3
drop table test_uncommitted_trx_minor_merge;

View File

@ -0,0 +1,38 @@
drop table if exists t1;
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';
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
alter system major freeze tenant = sys;
alter system major freeze tenant = all_user;
alter system major freeze tenant = all_meta;
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;
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
alter table t1 drop column obschema_c_3_OpRK;
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
select * from t1 limit 1;
obschema_c_10_Y obschema_c_0_68XcHo obschema_c_11_z obschema_c_12_PzG obschema_c_1_lTMGZYJ obschema_c_2_ENEd obschema_c_4_fpdB obschema_c_5_Gq obschema_c_6_u6dri obschema_c_7_XB obschema_c_8_7cq4kl obschema_c_9_ywrfyF
0.2034907000 0 0.12347 aEFGHI01 Hello OceanBase & Happy New Year1 0 0 9153608021209109295703075050360401 Hello OceanBase & Happy New Year3 0.000000000000 0 0.00000
select count(*) from t1;
count(*)
150
drop table t1;

View File

@ -0,0 +1,121 @@
set GLOBAL ob_query_timeout = 1000000000000;
set GLOBAL ob_trx_timeout = 1000000000000;
alter system set minor_compact_trigger = 10;
drop table if exists test_update_uncommitted_data;
create table test_update_uncommitted_data(num int, str varchar(50), tag int);
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);
alter system minor freeze;
update test_update_uncommitted_data set tag = num + tag where tag = 1;
alter system minor freeze;
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;
alter system set minor_compact_trigger = 1;
select * from test_update_uncommitted_data;
num str tag
select * from test_update_uncommitted_data;
num str tag
100 Hello OceanBase & Happy New Year 101
99 Hello OceanBase & Happy New Year 100
98 Hello OceanBase & Happy New Year 99
97 Hello OceanBase & Happy New Year 98
96 Hello OceanBase & Happy New Year 97
95 Hello OceanBase & Happy New Year 96
94 Hello OceanBase & Happy New Year 95
93 Hello OceanBase & Happy New Year 94
92 Hello OceanBase & Happy New Year 93
91 Hello OceanBase & Happy New Year 92
90 Hello OceanBase & Happy New Year 91
89 Hello OceanBase & Happy New Year 90
88 Hello OceanBase & Happy New Year 89
87 Hello OceanBase & Happy New Year 88
86 Hello OceanBase & Happy New Year 87
85 Hello OceanBase & Happy New Year 86
84 Hello OceanBase & Happy New Year 85
83 Hello OceanBase & Happy New Year 84
82 Hello OceanBase & Happy New Year 83
81 Hello OceanBase & Happy New Year 82
80 Hello OceanBase & Happy New Year 81
50 Hello OceanBase & Happy New Year 1
49 Hello OceanBase & Happy New Year 1
48 Hello OceanBase & Happy New Year 1
47 Hello OceanBase & Happy New Year 1
46 Hello OceanBase & Happy New Year 1
45 Hello OceanBase & Happy New Year 1
44 Hello OceanBase & Happy New Year 1
43 Hello OceanBase & Happy New Year 1
42 Hello OceanBase & Happy New Year 1
41 Hello OceanBase & Happy New Year 1
40 Hello OceanBase & Happy New Year 1
update test_update_uncommitted_data set tag = num + tag where tag = 1;
alter system minor freeze;
commit;
select * from test_update_uncommitted_data;
num str tag
100 Hello OceanBase & Happy New Year 101
99 Hello OceanBase & Happy New Year 100
98 Hello OceanBase & Happy New Year 99
97 Hello OceanBase & Happy New Year 98
96 Hello OceanBase & Happy New Year 97
95 Hello OceanBase & Happy New Year 96
94 Hello OceanBase & Happy New Year 95
93 Hello OceanBase & Happy New Year 94
92 Hello OceanBase & Happy New Year 93
91 Hello OceanBase & Happy New Year 92
90 Hello OceanBase & Happy New Year 91
89 Hello OceanBase & Happy New Year 90
88 Hello OceanBase & Happy New Year 89
87 Hello OceanBase & Happy New Year 88
86 Hello OceanBase & Happy New Year 87
85 Hello OceanBase & Happy New Year 86
84 Hello OceanBase & Happy New Year 85
83 Hello OceanBase & Happy New Year 84
82 Hello OceanBase & Happy New Year 83
81 Hello OceanBase & Happy New Year 82
80 Hello OceanBase & Happy New Year 81
50 Hello OceanBase & Happy New Year 51
49 Hello OceanBase & Happy New Year 50
48 Hello OceanBase & Happy New Year 49
47 Hello OceanBase & Happy New Year 48
46 Hello OceanBase & Happy New Year 47
45 Hello OceanBase & Happy New Year 46
44 Hello OceanBase & Happy New Year 45
43 Hello OceanBase & Happy New Year 44
42 Hello OceanBase & Happy New Year 43
41 Hello OceanBase & Happy New Year 42
40 Hello OceanBase & Happy New Year 41
select count(*) from test_update_uncommitted_data;
count(*)
32
drop table test_update_uncommitted_data;
alter system set minor_compact_trigger = 2;

View File

@ -0,0 +1,44 @@
set GLOBAL ob_query_timeout = 1000000000000;
set GLOBAL ob_trx_timeout = 10000000000000;
set GLOBAL ob_trx_idle_timeout = 10000000000;
alter system set minor_compact_trigger = 1;
drop table if exists t1;
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;
select /*+ INDEX(t1 idx1)*/c1, c2, c3, r1, r2, v1 from t1;
c1 c2 c3 r1 r2 v1
1 1 c300000000000001 1 1 v100000000000000000001
2 2 c300000000000002 2 2 v100000000000000000002
update t1 set v1 = "11111111111" where c1 = 1 and c2 = 1;
select /*+ INDEX(t1 idx1)*/c1, c2, c3, r1, r2, v1 from t1;
c1 c2 c3 r1 r2 v1
1 1 c300000000000001 1 1 11111111111
2 2 c300000000000002 2 2 v100000000000000000002
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
SAVEPOINT p1;
delete from t1 where c2 = 1;
select /*+ INDEX(t1 idx1)*/c1, c2, c3, r1, r2, v1 from t1;
c1 c2 c3 r1 r2 v1
2 2 c300000000000002 2 2 v100000000000000000002
insert into t1(c1, c2, c3, v1) values(1, 1, "c300000000000001", "v19999999");
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
ROLLBACK TO SAVEPOINT p1;
update t1 set r2 = 77 where c1 = 1 and c2 = 1;
alter system minor freeze tenant = sys;
alter system minor freeze tenant = all_user;
alter system minor freeze tenant = all_meta;
commit;
select /*+ INDEX(t1 idx1)*/c1, c2, c3, r1, r2, v1 from t1;
c1 c2 c3 r1 r2 v1
1 1 c300000000000001 1 77 11111111111
2 2 c300000000000002 2 2 v100000000000000000002
select * from t1;
c1 c2 c3 v1 v2 r1 r2
1 1 c300000000000001 11111111111 v200000000000000000001 1 77
2 2 c300000000000002 v100000000000000000002 v200000000000000000002 2 2
drop table t1;
alter system set minor_compact_trigger = 2;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;