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;