75 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			75 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								set global innodb_table_locks=1;
							 | 
						||
| 
								 | 
							
								select @@innodb_table_locks;
							 | 
						||
| 
								 | 
							
								@@innodb_table_locks
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								drop table if exists t1;
							 | 
						||
| 
								 | 
							
								set @@innodb_table_locks=1;
							 | 
						||
| 
								 | 
							
								create table t1 (id integer, x integer) engine=INNODB;
							 | 
						||
| 
								 | 
							
								insert into t1 values(0, 0);
							 | 
						||
| 
								 | 
							
								set autocommit=0;
							 | 
						||
| 
								 | 
							
								SELECT * from t1 where id = 0 FOR UPDATE;
							 | 
						||
| 
								 | 
							
								id	x
							 | 
						||
| 
								 | 
							
								0	0
							 | 
						||
| 
								 | 
							
								set autocommit=0;
							 | 
						||
| 
								 | 
							
								lock table t1 write;
							 | 
						||
| 
								 | 
							
								update t1 set x=1 where id = 0;
							 | 
						||
| 
								 | 
							
								select * from t1;
							 | 
						||
| 
								 | 
							
								id	x
							 | 
						||
| 
								 | 
							
								0	1
							 | 
						||
| 
								 | 
							
								commit;
							 | 
						||
| 
								 | 
							
								update t1 set x=2 where id = 0;
							 | 
						||
| 
								 | 
							
								commit;
							 | 
						||
| 
								 | 
							
								unlock tables;
							 | 
						||
| 
								 | 
							
								select * from t1;
							 | 
						||
| 
								 | 
							
								id	x
							 | 
						||
| 
								 | 
							
								0	2
							 | 
						||
| 
								 | 
							
								commit;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								set @@innodb_table_locks=0;
							 | 
						||
| 
								 | 
							
								create table t1 (id integer primary key, x integer) engine=INNODB;
							 | 
						||
| 
								 | 
							
								insert into t1 values(0, 0),(1,1),(2,2);
							 | 
						||
| 
								 | 
							
								commit;
							 | 
						||
| 
								 | 
							
								SELECT * from t1 where id = 0 FOR UPDATE;
							 | 
						||
| 
								 | 
							
								id	x
							 | 
						||
| 
								 | 
							
								0	0
							 | 
						||
| 
								 | 
							
								set autocommit=0;
							 | 
						||
| 
								 | 
							
								set @@innodb_table_locks=0;
							 | 
						||
| 
								 | 
							
								lock table t1 write;
							 | 
						||
| 
								 | 
							
								update t1 set x=10 where id = 2;
							 | 
						||
| 
								 | 
							
								SELECT * from t1 where id = 2;
							 | 
						||
| 
								 | 
							
								id	x
							 | 
						||
| 
								 | 
							
								2	2
							 | 
						||
| 
								 | 
							
								UPDATE t1 set x=3 where id = 2;
							 | 
						||
| 
								 | 
							
								commit;
							 | 
						||
| 
								 | 
							
								SELECT * from t1;
							 | 
						||
| 
								 | 
							
								id	x
							 | 
						||
| 
								 | 
							
								0	0
							 | 
						||
| 
								 | 
							
								1	1
							 | 
						||
| 
								 | 
							
								2	3
							 | 
						||
| 
								 | 
							
								commit;
							 | 
						||
| 
								 | 
							
								unlock tables;
							 | 
						||
| 
								 | 
							
								commit;
							 | 
						||
| 
								 | 
							
								select * from t1;
							 | 
						||
| 
								 | 
							
								id	x
							 | 
						||
| 
								 | 
							
								0	0
							 | 
						||
| 
								 | 
							
								1	1
							 | 
						||
| 
								 | 
							
								2	10
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#Bug#12842206 INNODB LOCKING REGRESSION FOR INSERT IGNORE
							 | 
						||
| 
								 | 
							
								#fixed by re-fixing Bug#7975
							 | 
						||
| 
								 | 
							
								#aka Bug#11759688 52020: InnoDB can still deadlock on just INSERT...
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (a INT PRIMARY KEY, b INT NOT NULL) ENGINE=InnoDB;
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES(3,1);
							 | 
						||
| 
								 | 
							
								BEGIN;
							 | 
						||
| 
								 | 
							
								INSERT IGNORE INTO t1 VALUES(3,14);
							 | 
						||
| 
								 | 
							
								BEGIN;
							 | 
						||
| 
								 | 
							
								INSERT IGNORE INTO t1 VALUES(3,23);
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1 FOR UPDATE;
							 | 
						||
| 
								 | 
							
								COMMIT;
							 | 
						||
| 
								 | 
							
								a	b
							 | 
						||
| 
								 | 
							
								3	1
							 | 
						||
| 
								 | 
							
								COMMIT;
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 |