mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	Bug #22876 Four-way deadlock This bug was fixed as a part of Bug#989 "If DROP TABLE while there's an active transaction, wrong binlog order" A statement which would have caused circular wait will now be aborted with ER_LOCK_DEADLOCK. Test case based on bug description added to innodb_mysql_lock.test. Note that innodb_lock_wait_timeout is set to 5 mins to prevent race conditions in the test.
		
			
				
	
	
		
			25 lines
		
	
	
		
			608 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			608 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #
 | |
| # Bug #22876 Four-way deadlock
 | |
| #
 | |
| DROP TABLE IF EXISTS t1;
 | |
| # Connection 1
 | |
| set @@autocommit=0;
 | |
| CREATE TABLE t1(s1 INT UNIQUE) ENGINE=innodb;
 | |
| INSERT INTO t1 VALUES (1);
 | |
| # Connection 2
 | |
| set @@autocommit=0;
 | |
| INSERT INTO t1 VALUES (2);
 | |
| INSERT INTO t1 VALUES (1);
 | |
| # Connection 3
 | |
| set @@autocommit=0;
 | |
| DROP TABLE t1;
 | |
| # Connection 1
 | |
| # Connection 1 is now holding the lock.
 | |
| # Issuing insert from connection 1 while connection 2&3 
 | |
| # is waiting for the lock should give a deadlock error.
 | |
| INSERT INTO t1 VALUES (2);
 | |
| ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
 | |
| # Cleanup
 | |
| commit;
 | |
| commit;
 |