github.com/matrixorigin/matrixone@v1.2.0/test/distributed/cases/pessimistic_transaction/isolation_2.sql (about)

     1  --env prepare statement
     2  drop table if exists dis_table_01;
     3  drop table if exists dis_table_02;
     4  drop table if exists dis_table_03;
     5  drop table if exists dis_table_04;
     6  drop table if exists dis_table_05;
     7  drop table if exists dis_table_06;
     8  drop table if exists dis_table_07;
     9  drop table if exists dis_view_01;
    10  drop table if exists dis_view_02;
    11  drop table if exists dis_temp_01;
    12  drop table if exists iso_table_0001;
    13  
    14  create table dis_table_01(a int,b varchar(25));
    15  insert into dis_table_01 select 20,'apple';
    16  insert into dis_table_01 select 21,'orange';
    17  start transaction;
    18  create view dis_view_01 as select * from dis_table_01;
    19  -- @session:id=1{
    20  use isolation_2;
    21  begin;
    22  insert into dis_table_01 values (22,'pear');
    23  select * from dis_table_01;
    24  update dis_table_01 set b='bens' where a=20;
    25  select * from dis_table_01;
    26  rollback ;
    27  -- @session}
    28  select * from dis_view_01;
    29  -- @session:id=2{
    30  use isolation_2;
    31  select * from dis_table_01;
    32  update dis_table_01 set a=19 where b='apple';
    33  select * from dis_table_01;
    34  -- @session}
    35  commit;
    36  select * from dis_view_01;
    37  select * from dis_table_01;
    38  
    39  -------------------------
    40  create table dis_table_02(a int not null auto_increment,b varchar(25) not null,c datetime,primary key(a),key bstr (b),key cdate (c) );
    41  insert into dis_table_02(b,c) values ('aaaa','2020-09-08');
    42  insert into dis_table_02(b,c) values ('aaaa','2020-09-08');
    43  create table dis_table_03(b varchar(25) primary key,c datetime);
    44  begin ;
    45  insert into dis_table_03 select b,c from dis_table_02;
    46  select * from dis_table_03;
    47  -- @session:id=1{
    48  insert into dis_table_03 select 'bbb','2012-09-30';
    49  update dis_table_03 set b='aaa';
    50  select * from dis_table_03;
    51  -- @session}
    52  -- @session:id=2{
    53  select * from dis_table_03;
    54  -- @wait:0:commit
    55  truncate table dis_table_03;
    56  -- @session}
    57  insert into dis_table_03 select 'bbb','2012-09-30';
    58  select * from dis_table_03;
    59  commit;
    60  select * from dis_table_03;
    61  
    62  begin ;
    63  insert into dis_table_02 values (null,'ccc',null);
    64  select * from dis_table_02;
    65  -- @session:id=1{
    66  start transaction ;
    67  insert into dis_table_02 values (5,null,'1345-09-23');
    68  select * from dis_table_02;
    69  commit;
    70  -- @session}
    71  -- @pattern
    72  update dis_table_02 set a=90;
    73  commit;
    74  select * from dis_table_02;
    75  
    76  ---------------------------------------
    77  start transaction ;
    78  create database dis_db_01;
    79  use dis_db_01;
    80  begin;
    81  create table dis_table_04(a int);
    82  insert into dis_table_04 values (4);
    83  -- @session:id=1{
    84  use dis_db_01;
    85  -- @wait:0:commit
    86  create table dis_table_04(a int);
    87  insert into dis_table_04 values (4);
    88  drop database dis_db_01;
    89  -- @session}
    90  delete from dis_table_04 where a=4;
    91  select * from dis_table_04;
    92  rollback ;
    93  select * from dis_db_01.dis_table_04;
    94  drop database dis_db_01;
    95  drop table isolation_2.dis_table_04;
    96  ---------------------------------------
    97  begin;
    98  use isolation_2;
    99  create external table ex_table_dis(num_col1 tinyint,num_col2 smallint,num_col3 int,num_col4 bigint,num_col5 tinyint unsigned,num_col6 smallint unsigned,num_col7 int unsigned,num_col8 bigint unsigned ,num_col9 float(5,3),num_col10 double(6,5),num_col11 decimal(38,19)) infile{"filepath"='$resources/external_table_file/ex_table_number.csv'} fields terminated by ',' enclosed by '\"' lines terminated by '\n';
   100  select num_col1,num_col2 from ex_table_dis;
   101  -- @session:id=1{
   102  use isolation_2;
   103  select * from ex_table_dis;
   104  -- @session}
   105  update ex_table_dis set num_col1=1000;
   106  select num_col1,num_col2 from ex_table_dis;
   107  commit;
   108  select num_col1,num_col2 from ex_table_dis;
   109  -- @session:id=1{
   110  use isolation_2;
   111  insert into dis_table_01 select num_col1,'fffff' from ex_table_dis;
   112  select * from dis_table_01;
   113  select num_col1,num_col2 from ex_table_dis;
   114  drop table ex_table_dis;
   115  -- @session}
   116  select * from dis_table_01;
   117  
   118  begin;
   119  create view  aaa as select * from dis_table_02;
   120  show create table aaa ;
   121  -- @session:id=1{
   122  use isolation_2;
   123  insert into  dis_table_02(b,c) values ('vvv','2000-09-08');
   124  -- @session}
   125  -- @session:id=2{
   126  begin ;
   127  select b, c from dis_table_02;
   128  delete from dis_table_02 where a=1;
   129  rollback ;
   130  -- @session}
   131  commit ;
   132  use isolation_2;
   133  select b, c from aaa;
   134  -- @session:id=1{
   135  select b, c from aaa;
   136  -- @session}
   137  drop view aaa ;
   138  
   139  start transaction ;
   140  insert into dis_table_02(b,c) values ('','1999-06-04');
   141  -- @session:id=1{
   142  use isolation_2;
   143  prepare stmt1 from "update dis_table_02 set c='2222-07-12' where a=2";
   144  execute stmt1;
   145  select b, c from dis_table_02;
   146  -- @session}
   147  use isolation_2;
   148  update dis_table_02 set c='2000-09-02' where a=2;
   149  select b, c from dis_table_02;
   150  -- @session:id=2{
   151  begin ;
   152  create database dis_db_02;
   153  rollback ;
   154  -- @session}
   155  commit;
   156  select b, c from dis_table_02;
   157  
   158  use isolation_2;
   159  begin ;
   160  prepare stmt1 from "insert into dis_table_02(b,c) values('oppo','1009-11-11')";
   161  execute stmt1;
   162  select b, c from dis_table_02;
   163  -- @session:id=1{
   164  use isolation_2;
   165  select b, c from dis_table_02;
   166  -- @session}
   167  prepare stmt2 from "update dis_table_02 set a=null";
   168  execute stmt2;
   169  commit;
   170  select b,c from dis_table_02;
   171  use dis_db_02;
   172  select b,c from dis_table_02;
   173  insert into dis_table_02(b,c) values ('','1999-06-04');
   174  ------------------------------
   175  -- @bvt:issue#9124
   176  create temporary table dis_temp_01(a int,b varchar(100),primary key(a));
   177  begin ;
   178  insert into dis_temp_01 values (233,'uuuu');
   179  -- @session:id=1{
   180  select * from dis_temp_01;
   181  -- @session}
   182  select * from dis_temp_01;
   183  -- @session:id=1{
   184  truncate table dis_temp_01;
   185  -- @session}
   186  rollback ;
   187  select * from dis_temp_01;
   188  drop table dis_temp_01;
   189  -- @bvt:issue
   190  
   191  -- @bvt:issue#10585
   192  start transaction;
   193  load data infile '$resources/external_table_file/isolation_01.csv' into table dis_table_02 fields terminated by ',';
   194  -- @session:id=1{
   195  use isolation_2;
   196  update dis_table_02 set b='pppp';
   197  select b, c from dis_table_02;
   198  -- @session}
   199  select b, c from dis_table_02;
   200  -- @session:id=2{
   201  use isolation_2;
   202  begin ;
   203  create view dis_view_02 as select * from dis_table_02;
   204  insert into dis_table_02 values (2,'oooo','1802-03-20');
   205  select b, c from dis_table_02;
   206  -- @session}
   207  -- @session:id=1{
   208  use isolation_2;
   209  select * from dis_view_02;
   210  -- @session}
   211  select * from dis_view_02;
   212  -- @session:id=2{
   213  use isolation_2;
   214  insert into dis_table_02 values (2,'oooo','1802-03-20');
   215  -- @session}
   216  commit;
   217  -- @session:id=1{
   218  use isolation_2;
   219  select b, c from dis_table_02;
   220  -- @session}
   221  select * from dis_view_02;
   222  drop table dis_view_02;
   223  
   224  begin ;
   225  select * from dis_table_01;
   226  -- @session:id=1{
   227  truncate table dis_table_01;
   228  -- @session}
   229  
   230  -- @session:id=1{
   231  select * from dis_table_01;
   232  -- @session}
   233  explain select * from dis_table_01;
   234  commit ;
   235  -- @session:id=1{
   236  select * from dis_table_01;
   237  -- @session}
   238  
   239  begin ;
   240  delete from dis_table_02 where a>1;
   241  select b, c from dis_table_02;
   242  -- @session:id=1{
   243  use isolation_2;
   244  select b, c from dis_table_02;
   245  -- @wait:0:commit
   246  update dis_table_02 set b='tittttt' where a>1;
   247  select b, c from dis_table_02;
   248  -- @session}
   249  select b, c from dis_table_02;
   250  -- @session:id=2{
   251  use isolation_2;
   252  rollback;
   253  start transaction ;
   254  update dis_table_02 set b='catttteee' where a>1;
   255  select b, c from dis_table_02;
   256  commit;
   257  -- @session}
   258  commit;
   259  select b, c from dis_table_02;
   260  -- @session:id=1{
   261  select b, c from dis_table_02;
   262  -- @session}
   263  --------------------------------
   264  -- @bvt:issue#10585
   265  create database if not exists iso_db_02;
   266  start transaction ;
   267  use iso_db_02;
   268  show tables;
   269  -- @session:id=1{
   270  use iso_db_02;
   271  begin ;
   272  create table iso_table_0001(a int);
   273  -- @session}
   274  insert into iso_table_0001 values (2);
   275  -- @session:id=2{
   276  use iso_db_02;
   277  create table iso_table_0001(a int);
   278  drop database iso_db_02;
   279  -- @session}
   280  -- @session:id=1{
   281  commit;
   282  -- @session}
   283  create table iso_table_0001(a int);
   284  commit;
   285  use iso_db_02;
   286  select * from iso_table_0001;
   287  
   288  use isolation_2;
   289  create table dis_table_04(a int,b varchar(25) not null,c datetime,primary key(a),unique key bstr (b),key cdate (c));
   290  insert into dis_table_04 values (6666,'kkkk','2010-11-25');
   291  insert into dis_table_04 values (879,'oopp','2011-11-26');
   292  insert into dis_table_01 select 20,'apple';
   293  insert into dis_table_01 select 21,'orange';
   294  select * from dis_table_01;
   295  start transaction ;
   296  use isolation_2;
   297  update dis_table_04 set b=(select 'ccccool' from dis_table_01 limit 1)  where a=879;
   298  select * from dis_table_04 ;
   299  -- @session:id=1{
   300  begin ;
   301  use isolation_2;
   302  -- @wait:0:commit
   303  update dis_table_04 set b='uuyyy' where a=879;
   304  select * from dis_table_04;
   305  commit;
   306  -- @session}
   307  commit;
   308  update dis_table_04 set b=(select 'kkkk')  where a=879;
   309  -- @session:id=1{
   310  select * from dis_table_04;
   311  -- @session}
   312  -- @bvt:issue
   313  ----------------------------
   314  -- @bvt:issue#9124
   315  begin ;
   316  use isolation_2;
   317  create temporary table dis_table_05(a int,b varchar(25) not null,c datetime,primary key(a),unique key bstr (b),key cdate (c));
   318  load data infile 'fff.csv' to dis_table_05 fields terminated by ',';
   319  -- @session:id=1{
   320  use isolation_2;
   321  select * from dis_table_05;
   322  -- @session}
   323  insert into dis_table_05 values (8900,'kkkk77','1772-04-20');
   324  commit;
   325  select * from dis_table_05;
   326  -- @session:id=1{
   327  select * from dis_table_05;
   328  -- @session}
   329  drop table dis_table_05;
   330  -- @bvt:issue
   331  
   332  -- auto_increment 主键冲突
   333  use isolation_2;
   334  create table dis_table_06(a int auto_increment primary key,b varchar(25),c double default 0.0);
   335  insert into dis_table_06(a,b) values(2,'moon');
   336  insert into dis_table_06(b) values('sun');
   337  begin;
   338  use isolation_2;
   339  insert into dis_table_06(a,b) values (3,'llllp');
   340  select * from dis_table_06;
   341  -- @session:id=1{
   342  use isolation_2;
   343  -- @wait:0:commit
   344  insert into dis_table_06 values (3,'uuubbb',12.02);
   345  select * from dis_table_06;
   346  -- @session}
   347  insert into dis_table_06(a,b) values (4,'cookie');
   348  commit;
   349  select * from dis_table_06;
   350  
   351  begin;
   352  use isolation_2;
   353  insert into dis_table_06(a,b) values (5,'leetio');
   354  select * from dis_table_06;
   355  -- @session:id=1{
   356  -- @wait:0:commit
   357  update dis_table_06 set a=5 where b='sun';
   358  select * from dis_table_06;
   359  -- @session}
   360  commit;
   361  select * from dis_table_06;
   362  drop table dis_table_06;
   363  
   364  --compk 冲突
   365  create table dis_table_07(a int,b varchar(25),c double,d datetime,primary key(a,b,d));
   366  insert into dis_table_07 values (1,'yellow',20.09,'2020-09-27');
   367  begin;
   368  insert into dis_table_07 values (2,'blue',10.00,'2021-01-20');
   369  -- @session:id=1{
   370  use isolation_2;
   371  -- @wait:0:commit
   372  insert into dis_table_07 values (2,'blue',11.00,'2021-01-20');
   373  select * from dis_table_07;
   374  -- @session}
   375  select * from dis_table_07;
   376  commit;
   377  select * from dis_table_07;
   378  -- @session:id=1{
   379  insert into dis_table_07 values (2,'blue',12.00,'2024-01-20');
   380  -- @session}
   381  begin;
   382  update dis_table_07 set d='2024-01-20' where a=2 and b='blue';
   383  -- @session:id=1{
   384  select * from dis_table_07;
   385  -- @session}
   386  select * from dis_table_07;
   387  commit;
   388  select * from dis_table_07;
   389  drop table dis_table_07;