mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 02:46:29 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			35 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| connect  pause_purge,localhost,root;
 | |
| START TRANSACTION WITH CONSISTENT SNAPSHOT;
 | |
| connection default;
 | |
| CREATE TABLE t (pk int PRIMARY KEY, sk INT UNIQUE) ENGINE=InnoDB;
 | |
| INSERT INTO t VALUES (10, 100);
 | |
| connect  con1,localhost,root;
 | |
| BEGIN;
 | |
| SELECT * FROM t WHERE sk = 100 FOR UPDATE;
 | |
| pk	sk
 | |
| 10	100
 | |
| connect  con2,localhost,root;
 | |
| SET DEBUG_SYNC="lock_wait_start SIGNAL insert_wait_started";
 | |
| INSERT INTO t VALUES (5, 100) # trx 1;
 | |
| connect  con3,localhost,root;
 | |
| SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
 | |
| SET DEBUG_SYNC="now WAIT_FOR insert_wait_started";
 | |
| SET DEBUG_SYNC="lock_wait_start SIGNAL delete_started_waiting";
 | |
| DELETE FROM t WHERE sk = 100 # trx 2;
 | |
| connection con1;
 | |
| SET DEBUG_SYNC="now WAIT_FOR delete_started_waiting";
 | |
| DELETE FROM t WHERE sk=100;
 | |
| COMMIT;
 | |
| disconnect con1;
 | |
| connection con2;
 | |
| disconnect con2;
 | |
| connection con3;
 | |
| ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
 | |
| disconnect con3;
 | |
| connection default;
 | |
| SELECT * FROM t;
 | |
| pk	sk
 | |
| 5	100
 | |
| disconnect pause_purge;
 | |
| SET DEBUG_SYNC="RESET";
 | |
| DROP TABLE t;
 | 
