68 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			68 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								--source include/have_partition.inc
							 | 
						||
| 
								 | 
							
								--source include/have_innodb.inc
							 | 
						||
| 
								 | 
							
								--source include/have_not_innodb_plugin.inc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug#32430 - show engine innodb status causes errors
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								SET NAMES utf8;
							 | 
						||
| 
								 | 
							
								CREATE TABLE `t``\""e` (a INT, PRIMARY KEY (a))
							 | 
						||
| 
								 | 
							
								ENGINE=InnoDB
							 | 
						||
| 
								 | 
							
								PARTITION BY RANGE (a)
							 | 
						||
| 
								 | 
							
								SUBPARTITION BY HASH (a)
							 | 
						||
| 
								 | 
							
								(PARTITION `p0``\""e` VALUES LESS THAN (100)
							 | 
						||
| 
								 | 
							
								 (SUBPARTITION `sp0``\""e`,
							 | 
						||
| 
								 | 
							
								  SUBPARTITION `sp1``\""e`),
							 | 
						||
| 
								 | 
							
								 PARTITION `p1``\""e` VALUES LESS THAN (MAXVALUE)
							 | 
						||
| 
								 | 
							
								 (SUBPARTITION `sp2``\""e`,
							 | 
						||
| 
								 | 
							
								  SUBPARTITION `sp3``\""e`));
							 | 
						||
| 
								 | 
							
								INSERT INTO `t``\""e` VALUES (0), (2), (6), (10), (14), (18), (22);
							 | 
						||
| 
								 | 
							
								START TRANSACTION;
							 | 
						||
| 
								 | 
							
								--echo # con1
							 | 
						||
| 
								 | 
							
								connect(con1,localhost,root,,);
							 | 
						||
| 
								 | 
							
								SET NAMES utf8;
							 | 
						||
| 
								 | 
							
								START TRANSACTION;
							 | 
						||
| 
								 | 
							
								--echo # default connection
							 | 
						||
| 
								 | 
							
								connection default;
							 | 
						||
| 
								 | 
							
								UPDATE `t``\""e` SET a = 16 WHERE a = 0;
							 | 
						||
| 
								 | 
							
								--echo # con1
							 | 
						||
| 
								 | 
							
								connection con1;
							 | 
						||
| 
								 | 
							
								UPDATE `t``\""e` SET a = 8 WHERE a = 22;
							 | 
						||
| 
								 | 
							
								let $id_1= `SELECT CONNECTION_ID()`;
							 | 
						||
| 
								 | 
							
								SEND;
							 | 
						||
| 
								 | 
							
								UPDATE `t``\""e` SET a = 12 WHERE a = 0;
							 | 
						||
| 
								 | 
							
								--echo # default connection
							 | 
						||
| 
								 | 
							
								connection default;
							 | 
						||
| 
								 | 
							
								let $wait_timeout= 2;
							 | 
						||
| 
								 | 
							
								let $wait_condition= SELECT 1 FROM INFORMATION_SCHEMA.PROCESSLIST
							 | 
						||
| 
								 | 
							
								WHERE ID = $id_1 AND STATE = 'Searching rows for update';
							 | 
						||
| 
								 | 
							
								--source include/wait_condition.inc
							 | 
						||
| 
								 | 
							
								#--echo # tested wait condition $wait_condition_reps times
							 | 
						||
| 
								 | 
							
								--error ER_LOCK_DEADLOCK
							 | 
						||
| 
								 | 
							
								UPDATE `t``\""e` SET a = 4 WHERE a = 22;
							 | 
						||
| 
								 | 
							
								--echo # First table reported in 'SHOW ENGINE InnoDB STATUS'
							 | 
						||
| 
								 | 
							
								# RECORD LOCKS space id 0 page no 50 n bits 80 index `PRIMARY` in \
							 | 
						||
| 
								 | 
							
								# Database `test`, Table `t1`, Partition `p0`, Subpartition `sp0` \
							 | 
						||
| 
								 | 
							
								# trx id 0 775
							 | 
						||
| 
								 | 
							
								# NOTE: replace_regex is very slow on match copy/past '(.*)' regex's
							 | 
						||
| 
								 | 
							
								# on big texts, removing a lot of text before + after makes it much faster.
							 | 
						||
| 
								 | 
							
								#/.*in (.*) trx.*/\1/
							 | 
						||
| 
								 | 
							
								--replace_regex /.*RECORD LOCKS space id [0-9]* page no [0-9]* n bits [0-9]* // / trx id .*// /.*index .* in //
							 | 
						||
| 
								 | 
							
								SHOW ENGINE InnoDB STATUS;
							 | 
						||
| 
								 | 
							
								set @old_sql_mode = @@sql_mode;
							 | 
						||
| 
								 | 
							
								set sql_mode = 'ANSI_QUOTES';
							 | 
						||
| 
								 | 
							
								# INNODB_LOCKS only exists in innodb_plugin
							 | 
						||
| 
								 | 
							
								#SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
							 | 
						||
| 
								 | 
							
								--replace_regex /.*RECORD LOCKS space id [0-9]* page no [0-9]* n bits [0-9]* // / trx id .*// /.*index .* in //
							 | 
						||
| 
								 | 
							
								SHOW ENGINE InnoDB STATUS;
							 | 
						||
| 
								 | 
							
								set @@sql_mode = @old_sql_mode;
							 | 
						||
| 
								 | 
							
								--echo # con1
							 | 
						||
| 
								 | 
							
								connection con1;
							 | 
						||
| 
								 | 
							
								REAP;
							 | 
						||
| 
								 | 
							
								ROLLBACK;
							 | 
						||
| 
								 | 
							
								disconnect con1;
							 | 
						||
| 
								 | 
							
								--echo # default connection
							 | 
						||
| 
								 | 
							
								connection default;
							 | 
						||
| 
								 | 
							
								DROP TABLE `t``\""e`;
							 | 
						||
| 
								 | 
							
								SET NAMES DEFAULT;
							 |