mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-30 04:26:45 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			102 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| SET SESSION STORAGE_ENGINE = InnoDB;
 | |
| DROP TABLE IF EXISTS t1, t2, t3, t4;
 | |
| CREATE TABLE t1 (id INTEGER) ENGINE=MyISAM;
 | |
| CREATE TABLE t2 (id INTEGER PRIMARY KEY);
 | |
| CREATE TABLE t3 (a CHAR(32) PRIMARY KEY,id INTEGER);
 | |
| CREATE TABLE t4 (a CHAR(32) PRIMARY KEY,id INTEGER) ENGINE=MyISAM;
 | |
| INSERT INTO t1 (id) VALUES (1);
 | |
| INSERT INTO t1 SELECT id+1 FROM t1;
 | |
| INSERT INTO t1 SELECT id+2 FROM t1;
 | |
| INSERT INTO t1 SELECT id+4 FROM t1;
 | |
| INSERT INTO t1 SELECT id+8 FROM t1;
 | |
| INSERT INTO t1 SELECT id+16 FROM t1;
 | |
| INSERT INTO t1 SELECT id+32 FROM t1;
 | |
| INSERT INTO t1 SELECT id+64 FROM t1;
 | |
| INSERT INTO t1 SELECT id+128 FROM t1;
 | |
| INSERT INTO t1 SELECT id+256 FROM t1;
 | |
| INSERT INTO t1 SELECT id+512 FROM t1;
 | |
| INSERT INTO t1 SELECT id+1024 FROM t1;
 | |
| INSERT INTO t1 SELECT id+2048 FROM t1;
 | |
| INSERT INTO t1 SELECT id+4096 FROM t1;
 | |
| INSERT INTO t1 SELECT id+8192 FROM t1;
 | |
| INSERT INTO t1 SELECT id+16384 FROM t1;
 | |
| INSERT INTO t1 SELECT id+32768 FROM t1;
 | |
| INSERT INTO t1 SELECT id+65536 FROM t1;
 | |
| INSERT INTO t1 SELECT id+131072 FROM t1;
 | |
| INSERT INTO t1 SELECT id+262144 FROM t1;
 | |
| INSERT INTO t1 SELECT id+524288 FROM t1;
 | |
| INSERT INTO t1 SELECT id+1048576 FROM t1;
 | |
| INSERT INTO t2 SELECT * FROM t1;
 | |
| INSERT INTO t3 SELECT CONCAT(id),id FROM t2 ORDER BY -id;
 | |
| INSERT INTO t4 SELECT * FROM t3 ORDER BY CONCAT(a);
 | |
| SELECT SUM(id) FROM t3;
 | |
| SUM(id)
 | |
| 2199024304128
 | |
| DROP TABLE t1,t2,t3,t4;
 | |
| CREATE TABLE t1 (f1 int NOT NULL) ENGINE=InnoDB;
 | |
| CREATE TABLE t2 (f2 int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB;
 | |
| CREATE TRIGGER t1_bi before INSERT
 | |
| ON t1 FOR EACH ROW
 | |
| BEGIN
 | |
| DECLARE CONTINUE HANDLER FOR SQLSTATE '40001' SET @a:= 'deadlock';
 | |
| DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @a:= 'exception';
 | |
| INSERT INTO t2 (f2) VALUES (1);
 | |
| DELETE FROM t2 WHERE f2 = 1;
 | |
| END;|
 | |
| CREATE PROCEDURE proc24989()
 | |
| BEGIN
 | |
| DECLARE CONTINUE HANDLER FOR SQLSTATE '40001' SET @b:= 'deadlock';
 | |
| DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @a:= 'exception';
 | |
| INSERT INTO t2 (f2) VALUES (1);
 | |
| DELETE FROM t2 WHERE f2 = 1;
 | |
| END;|
 | |
| create procedure proc24989_2()
 | |
| deterministic
 | |
| begin
 | |
| declare continue handler for sqlexception
 | |
| select 'Outer handler' as 'exception';
 | |
| insert into t1 values(1);
 | |
| select "continued";
 | |
| end|
 | |
| start transaction;
 | |
| insert into t1 values(1);
 | |
| start transaction;
 | |
| insert into t2 values(123);
 | |
| insert into t1 values(1);
 | |
| insert into t1 values(1);
 | |
| ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
 | |
| select @a;
 | |
| @a
 | |
| NULL
 | |
| select * from t2;
 | |
| f2
 | |
| commit;
 | |
| start transaction;
 | |
| insert into t1 values(1);
 | |
| start transaction;
 | |
| insert into t2 values(123);
 | |
| call proc24989();
 | |
| insert into t1 values(1);
 | |
| select @a,@b;
 | |
| @a	@b
 | |
| exception	deadlock
 | |
| select * from t2;
 | |
| f2
 | |
| commit;
 | |
| start transaction;
 | |
| insert into t1 values(1);
 | |
| start transaction;
 | |
| insert into t2 values(123);
 | |
| call proc24989_2();
 | |
| insert into t1 values(1);
 | |
| commit;
 | |
| exception
 | |
| Outer handler
 | |
| continued
 | |
| continued
 | |
| select * from t2;
 | |
| f2
 | |
| drop procedure proc24989;
 | |
| drop procedure proc24989_2;
 | |
| drop table t1,t2;
 | 
