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