github.com/matrixorigin/matrixone@v0.7.0/test/distributed/cases/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  truncate table dis_table_03;
    55  -- @session}
    56  insert into dis_table_03 select 'bbb','2012-09-30';
    57  select * from dis_table_03;
    58  commit;
    59  select * from dis_table_03;
    60  
    61  begin ;
    62  insert into dis_table_02 values (null,'ccc',null);
    63  select * from dis_table_02;
    64  -- @session:id=1{
    65  start transaction ;
    66  insert into dis_table_02 values (5,null,'1345-09-23');
    67  select * from dis_table_02;
    68  commit;
    69  -- @session}
    70  update dis_table_02 set a=90;
    71  commit;
    72  select * from dis_table_02;
    73  
    74  ---------------------------------------
    75  start transaction ;
    76  create database dis_db_01;
    77  use dis_db_01;
    78  create table dis_table_04(a int);
    79  insert into dis_table_04 values (4);
    80  -- @session:id=1{
    81  create table dis_table_04(a int);
    82  insert into dis_table_04 values (4);
    83  drop database dis_db_01;
    84  -- @session}
    85  delete from dis_table_04 where a=4;
    86  select * from dis_table_04;
    87  rollback ;
    88  select * from dis_db_01.dis_table_04;
    89  drop database dis_db_01;
    90  drop table isolation_2.dis_table_04;
    91  ---------------------------------------
    92  begin;
    93  use isolation_2;
    94  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';
    95  select num_col1,num_col2 from ex_table_dis;
    96  -- @session:id=1{
    97  select * from ex_table_dis;
    98  -- @session}
    99  update ex_table_dis set num_col1=1000;
   100  select num_col1,num_col2 from ex_table_dis;
   101  commit;
   102  select num_col1,num_col2 from ex_table_dis;
   103  -- @session:id=1{
   104  insert into dis_table_01 select num_col1,'fffff' from ex_table_dis;
   105  select * from dis_table_01;
   106  select num_col1,num_col2 from ex_table_dis;
   107  drop table ex_table_dis;
   108  -- @session}
   109  select * from dis_table_01;
   110  
   111  begin;
   112  create view  aaa as select * from dis_table_02;
   113  show create table aaa ;
   114  -- @session:id=1{
   115  insert into  dis_table_02(b,c) values ('vvv','2000-09-08');
   116  -- @session}
   117  -- @session:id=2{
   118  begin ;
   119  select b, c from dis_table_02;
   120  delete from dis_table_02 where a=1;
   121  rollback ;
   122  -- @session}
   123  commit ;
   124  select b, c from aaa;
   125  -- @session:id=1{
   126  select b, c from aaa;
   127  -- @session}
   128  drop view aaa ;
   129  
   130  start transaction ;
   131  insert into dis_table_02(b,c) values ('','1999-06-04');
   132  -- @session:id=1{
   133  prepare stmt1 from "update dis_table_02 set c='2222-07-12' where a=2";
   134  execute stmt1;
   135  select b, c from dis_table_02;
   136  -- @session}
   137  update dis_table_02 set c='2000-09-02' where a=2;
   138  select b, c from dis_table_02;
   139  -- @session:id=2{
   140  begin ;
   141  create database dis_db_02;
   142  rollback ;
   143  -- @session}
   144  commit;
   145  select b, c from dis_table_02;
   146  
   147  begin ;
   148  prepare stmt1 from "insert into dis_table_02(b,c) values('oppo','1009-11-11')";
   149  execute stmt1;
   150  select b, c from dis_table_02;
   151  -- @session:id=1{
   152  select b, c from dis_table_02;
   153  -- @session}
   154  prepare stmt2 from "update dis_table_02 set a=null";
   155  execute stmt2;
   156  commit;
   157  select b, c from dis_table_02;
   158  use dis_db_02;
   159  select b, c from dis_table_02;
   160  insert into dis_table_02(b,c) values ('','1999-06-04');
   161  
   162  ------------------------------
   163  create temporary table dis_temp_01(a int,b varchar(100),primary key(a));
   164  begin ;
   165  insert into dis_temp_01 values (233,'uuuu');
   166  -- @session:id=1{
   167  select * from dis_temp_01;
   168  -- @session}
   169  select * from dis_temp_01;
   170  -- @session:id=1{
   171  truncate table dis_temp_01;
   172  -- @session}
   173  rollback ;
   174  select * from dis_temp_01;
   175  drop table dis_temp_01;
   176  
   177  start transaction;
   178  load data infile '$resources/external_table_file/isolation_01.csv' into table dis_table_02;
   179  -- @session:id=1{
   180  update dis_table_02 set b='pppp';
   181  select b, c from dis_table_02;
   182  -- @session}
   183  select b, c from dis_table_02;
   184  -- @session:id=2{
   185  begin ;
   186  create view dis_view_02 as select * from dis_table_02;
   187  insert into dis_table_02 values (2,'oooo','1802-03-20');
   188  select b, c from dis_table_02;
   189  -- @session}
   190  -- @session:id=1{
   191  use isolation_2;
   192  select * from dis_view_02;
   193  -- @session}
   194  select * from dis_view_02;
   195  -- @session:id=2{
   196  insert into dis_table_02 values (2,'oooo','1802-03-20');
   197  -- @session}
   198  commit;
   199  -- @session:id=1{
   200  select b, c from dis_table_02;
   201  -- @session}
   202  select * from dis_view_02;
   203  drop table dis_view_02;
   204  
   205  begin ;
   206  select * from dis_table_01;
   207  -- @session:id=1{
   208  truncate table dis_table_01;
   209  -- @session}
   210  insert into dis_table_01 select 9999,'abcdefg';
   211  -- @session:id=1{
   212  select * from dis_table_01;
   213  -- @session}
   214  explain select * from dis_table_01;
   215  commit ;
   216  -- @session:id=1{
   217  select * from dis_table_01;
   218  -- @session}
   219  
   220  begin ;
   221  delete from dis_table_02 where a>1;;
   222  select b, c from dis_table_02;
   223  -- @session:id=1{
   224  select b, c from dis_table_02;
   225  update dis_table_02 set b='tittttt' where a>1;
   226  select b, c from dis_table_02;
   227  -- @session}
   228  select b, c from dis_table_02;
   229  -- @session:id=2{
   230  start transaction ;
   231  update dis_table_02 set b='catttteee' where a>1;
   232  select b, c from dis_table_02;
   233  commit;
   234  -- @session}
   235  commit;
   236  select b, c from dis_table_02;
   237  -- @session:id=1{
   238  select b, c from dis_table_02;
   239  -- @session}
   240  
   241  --------------------------------
   242  create database if not exists iso_db_02;
   243  start transaction ;
   244  use iso_db_02;
   245  show tables;
   246  -- @session:id=1{
   247  begin ;
   248  use iso_db_02;
   249  create table iso_table_0001(a int);
   250  -- @session}
   251  insert into iso_table_0001 values (2);
   252  -- @session:id=2{
   253  use iso_db_02;
   254  create table iso_table_0001(a int);
   255  drop database iso_db_02;
   256  -- @session}
   257  -- @session:id=1{
   258  commit;
   259  -- @session}
   260  create table iso_table_0001(a int);
   261  commit;
   262  use iso_db_02;
   263  select * from iso_table_0001;
   264  
   265  use isolation_2;
   266  create table dis_table_04(a int,b varchar(25) not null,c datetime,primary key(a),unique key bstr (b),key cdate (c));
   267  insert into dis_table_04 values (6666,'kkkk','2010-11-25');
   268  insert into dis_table_04 values (879,'oopp','2011-11-26');
   269  select * from dis_table_01;
   270  start transaction ;
   271  use isolation_2;
   272  update dis_table_04 set b=(select 'ccccool' from dis_table_01 limit 1)  where a=879;
   273  select * from dis_table_04 ;
   274  -- @session:id=1{
   275  begin ;
   276  use isolation_2;
   277  update dis_table_04 set b='uuyyy' where a=879;
   278  select * from dis_table_04;
   279  commit;
   280  -- @session}
   281  commit;
   282  update dis_table_04 set b=(select 'kkkk')  where a=879;
   283  -- @session:id=1{
   284  select * from dis_table_04;
   285  -- @session}
   286  ----------------------------
   287  begin ;
   288  use isolation_2;
   289  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));
   290  load data infile 'fff.csv' to dis_table_05;
   291  -- @session:id=1{
   292  use isolation_2;
   293  select * from dis_table_05;
   294  -- @session}
   295  insert into dis_table_05 values (8900,'kkkk77','1772-04-20');
   296  commit;
   297  select * from dis_table_05;
   298  -- @session:id=1{
   299  select * from dis_table_05;
   300  -- @session}
   301  drop table dis_table_05;
   302  
   303  -- auto_increment 主键冲突
   304  use isolation_2;
   305  create table dis_table_06(a int auto_increment primary key,b varchar(25),c double default 0.0);
   306  insert into dis_table_06(a,b) values(2,'moon');
   307  insert into dis_table_06(b) values('sun');
   308  begin;
   309  use isolation_2;
   310  insert into dis_table_06(a,b) values (3,'llllp');
   311  select * from dis_table_06;
   312  -- @session:id=1{
   313  use isolation_2;
   314  insert into dis_table_06 values (3,'uuubbb',12.02);
   315  select * from dis_table_06;
   316  -- @session}
   317  insert into dis_table_06(a,b) values (4,'cookie');
   318  commit;
   319  select * from dis_table_06;
   320  
   321  begin;
   322  use isolation_2;
   323  insert into dis_table_06(a,b) values (5,'leetio');
   324  select * from dis_table_06;
   325  -- @session:id=1{
   326  update dis_table_06 set a=5 where b='sun';
   327  select * from dis_table_06;
   328  -- @session}
   329  commit;
   330  select * from dis_table_06;
   331  drop table dis_table_06;
   332  
   333  --compk 冲突
   334  create table dis_table_07(a int,b varchar(25),c double,d datetime,primary key(a,b,d));
   335  insert into dis_table_07 values (1,'yellow',20.09,'2020-09-27');
   336  begin;
   337  insert into dis_table_07 values (2,'blue',10.00,'2021-01-20');
   338  -- @session:id=1{
   339  use isolation_2;
   340  insert into dis_table_07 values (2,'blue',11.00,'2021-01-20');
   341  select * from dis_table_07;
   342  -- @session}
   343  select * from dis_table_07;
   344  commit;
   345  select * from dis_table_07;
   346  -- @session:id=1{
   347  insert into dis_table_07 values (2,'blue',12.00,'2024-01-20');
   348  -- @session}
   349  begin;
   350  update dis_table_07 set d='2024-01-20' where a=2 and b='blue';
   351  -- @session:id=1{
   352  select * from dis_table_07;
   353  -- @session}
   354  select * from dis_table_07;
   355  commit;
   356  select * from dis_table_07;
   357  drop table dis_table_07;
   358  
   359  
   360