mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	innodb_autoinc_lock_mode = 2 innodb_buffer_pool_dump_at_shutdown = ON innodb_buffer_pool_dump_pct = 25 innodb_buffer_pool_load_at_startup = ON innodb_checksum_algorithm = CRC32 innodb_file_format = Barracuda innodb_large_prefix = ON innodb_log_compressed_pages = ON innodb_purge_threads = 4 innodb_strict_mode = ON binlog_annotate_row_events = ON binlog_format = MIXED binlog-row-event-max-size = 8192 group_concat_max_len = 1M lock_wait_timeout = 86400 log_slow_admin_statements = ON log_slow_slave_statements = ON log_warnings = 2 max_allowed_packet = 16M replicate_annotate_row_events = ON slave_net_timeout = 60 sync_binlog = 1 aria_recover = BACKUP,QUICK myisam_recover_options = BACKUP,QUICK
		
			
				
	
	
		
			170 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			170 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| set @old_innodb_lock_wait_timeout=@@global.innodb_lock_wait_timeout;
 | |
| set global innodb_lock_wait_timeout=300;
 | |
| set session innodb_lock_wait_timeout=300;
 | |
| call mtr.add_suppression("Deadlock found when trying to get lock; try restarting transaction");
 | |
| #
 | |
| # Bug #22876 Four-way deadlock
 | |
| #
 | |
| DROP TABLE IF EXISTS t1;
 | |
| connect  con1,localhost,root,,;
 | |
| connect  con2,localhost,root,,;
 | |
| connect  con3,localhost,root,,;
 | |
| connection con1;
 | |
| set @@autocommit=0;
 | |
| CREATE TABLE t1(s1 INT UNIQUE) ENGINE=innodb;
 | |
| INSERT INTO t1 VALUES (1);
 | |
| connection con2;
 | |
| set @@autocommit=0;
 | |
| INSERT INTO t1 VALUES (2);
 | |
| INSERT INTO t1 VALUES (1);
 | |
| connection con3;
 | |
| set @@autocommit=0;
 | |
| DROP TABLE t1;
 | |
| connection con1;
 | |
| # 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
 | |
| connection con2;
 | |
| commit;
 | |
| set @@autocommit=1;
 | |
| connection con1;
 | |
| commit;
 | |
| set @@autocommit=1;
 | |
| connection con3;
 | |
| set @@autocommit=1;
 | |
| connection default;
 | |
| disconnect con1;
 | |
| disconnect con2;
 | |
| disconnect con3;
 | |
| #
 | |
| # Test for bug #37346 "innodb does not detect deadlock between update
 | |
| #                      and alter table".
 | |
| #
 | |
| drop table if exists t1;
 | |
| create table t1 (c1 int primary key, c2 int, c3 int) engine=InnoDB;
 | |
| insert into t1 values (1,1,0),(2,2,0),(3,3,0),(4,4,0),(5,5,0);
 | |
| begin;
 | |
| # Run statement which acquires X-lock on one of table's rows.
 | |
| update t1 set c3=c3+1 where c2=3;
 | |
| #
 | |
| connect  con37346,localhost,root,,test,,;
 | |
| connection con37346;
 | |
| # The below ALTER TABLE statement should wait till transaction
 | |
| # in connection 'default' is complete and then succeed.
 | |
| # It should not deadlock or fail with ER_LOCK_DEADLOCK error.
 | |
| # Sending:
 | |
| alter table t1 add column c4 int;;
 | |
| #
 | |
| connection default;
 | |
| # Wait until the above ALTER TABLE gets blocked because this
 | |
| # connection holds SW metadata lock on table to be altered.
 | |
| # The below statement should succeed. It should not
 | |
| # deadlock or end with ER_LOCK_DEADLOCK error.
 | |
| update t1 set c3=c3+1 where c2=4;
 | |
| # Unblock ALTER TABLE by committing transaction.
 | |
| commit;
 | |
| #
 | |
| connection con37346;
 | |
| # Reaping ALTER TABLE.
 | |
| #
 | |
| connection default;
 | |
| disconnect con37346;
 | |
| drop table t1;
 | |
| #
 | |
| # Bug#53798 OPTIMIZE TABLE breaks repeatable read
 | |
| #
 | |
| DROP TABLE IF EXISTS t1;
 | |
| CREATE TABLE t1 (a INT) engine=innodb;
 | |
| INSERT INTO t1 VALUES (1), (2), (3);
 | |
| connect  con1, localhost, root;
 | |
| START TRANSACTION WITH CONSISTENT SNAPSHOT;
 | |
| SELECT * FROM t1;
 | |
| a
 | |
| 1
 | |
| 2
 | |
| 3
 | |
| connection default;
 | |
| # This should block
 | |
| # Sending:
 | |
| OPTIMIZE TABLE t1;
 | |
| connection con1;
 | |
| SELECT * FROM t1;
 | |
| a
 | |
| 1
 | |
| 2
 | |
| 3
 | |
| COMMIT;
 | |
| connection default;
 | |
| # Reaping OPTIMIZE TABLE t1
 | |
| Table	Op	Msg_type	Msg_text
 | |
| test.t1	optimize	note	Table does not support optimize, doing recreate + analyze instead
 | |
| test.t1	optimize	status	OK
 | |
| disconnect con1;
 | |
| DROP TABLE t1;
 | |
| #
 | |
| # Bug#49891 View DDL breaks REPEATABLE READ
 | |
| #
 | |
| DROP TABLE IF EXISTS t1, t2;
 | |
| DROP VIEW IF EXISTS v2;
 | |
| CREATE TABLE t1 ( f1 INTEGER ) ENGINE = innodb;
 | |
| CREATE TABLE t2 ( f1 INTEGER );
 | |
| CREATE VIEW v1 AS SELECT 1 FROM t1;
 | |
| connect  con2, localhost, root;
 | |
| connect  con3, localhost, root;
 | |
| connection con3;
 | |
| LOCK TABLE t1 WRITE;
 | |
| connection default;
 | |
| START TRANSACTION;
 | |
| # Sending:
 | |
| SELECT * FROM v1;
 | |
| connection con2;
 | |
| # Waiting for 'SELECT * FROM v1' to sync in.
 | |
| # Sending:
 | |
| ALTER VIEW v1 AS SELECT 2 FROM t2;
 | |
| connection con3;
 | |
| # Waiting for 'ALTER VIEW v1 AS SELECT 2 FROM t2' to sync in.
 | |
| UNLOCK TABLES;
 | |
| connection default;
 | |
| # Reaping: SELECT * FROM v1
 | |
| 1
 | |
| SELECT * FROM v1;
 | |
| 1
 | |
| COMMIT;
 | |
| connection con2;
 | |
| # Reaping: ALTER VIEW v1 AS SELECT 2 FROM t2
 | |
| connection default;
 | |
| DROP TABLE t1, t2;
 | |
| DROP VIEW v1;
 | |
| disconnect con2;
 | |
| disconnect con3;
 | |
| #
 | |
| # Bug#11815600 [ERROR] INNODB COULD NOT FIND INDEX PRIMARY
 | |
| #              KEY NO 0 FOR TABLE IN ERROR LOG 
 | |
| #
 | |
| DROP TABLE IF EXISTS t1;
 | |
| connect  con1,localhost,root;
 | |
| connection default;
 | |
| CREATE TABLE t1 (id INT PRIMARY KEY, value INT) ENGINE = InnoDB;
 | |
| INSERT INTO t1 VALUES (1, 12345);
 | |
| START TRANSACTION;
 | |
| SELECT * FROM t1;
 | |
| id	value
 | |
| 1	12345
 | |
| connection con1;
 | |
| SET lock_wait_timeout=1;
 | |
| ALTER TABLE t1 ADD INDEX idx(value);
 | |
| ERROR HY000: Lock wait timeout exceeded; try restarting transaction
 | |
| ALTER TABLE t1 ADD INDEX idx(value);
 | |
| ERROR HY000: Lock wait timeout exceeded; try restarting transaction
 | |
| connection default;
 | |
| SELECT * FROM t1;
 | |
| id	value
 | |
| 1	12345
 | |
| COMMIT;
 | |
| DROP TABLE t1;
 | |
| disconnect con1;
 | |
| set global innodb_lock_wait_timeout=@old_innodb_lock_wait_timeout;
 |