mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
# In order to be more or less robust test for bug#25044 has to take
 | 
						|
# significant time (e.g. about 9 seconds on my (Dmitri's) computer)
 | 
						|
# so we probably want execute it only in --big-test mode.
 | 
						|
--source include/big_test.inc
 | 
						|
--source include/have_binlog_format_mixed_or_statement.inc
 | 
						|
 | 
						|
 | 
						|
#
 | 
						|
# Test for bug #25044 "ALTER TABLE ... ENABLE KEYS acquires global
 | 
						|
# 'opening tables' lock".
 | 
						|
#
 | 
						|
# ALTER TABLE ... ENABLE KEYS should not acquire LOCK_open mutex for
 | 
						|
# the whole its duration as it prevents other queries from execution.
 | 
						|
--disable_warnings
 | 
						|
drop table if exists t1, t2;
 | 
						|
--enable_warnings
 | 
						|
connect (addconroot, localhost, root,,);
 | 
						|
connection default;
 | 
						|
create table t1 (n1 int, n2 int, n3 int,
 | 
						|
                key (n1, n2, n3),
 | 
						|
                key (n2, n3, n1),
 | 
						|
                key (n3, n1, n2));
 | 
						|
create table t2 (i int);
 | 
						|
 | 
						|
# Populating 't1' table with keys disabled, so ALTER TABLE .. ENABLE KEYS
 | 
						|
# will run for some time
 | 
						|
alter table t1 disable keys;
 | 
						|
--disable_query_log
 | 
						|
insert into t1 values (RAND()*1000,RAND()*1000,RAND()*1000);
 | 
						|
let $1=19;
 | 
						|
while ($1)
 | 
						|
{
 | 
						|
 eval insert into t1 select RAND()*1000,RAND()*1000,RAND()*1000 from t1;
 | 
						|
 dec $1;
 | 
						|
}
 | 
						|
--enable_query_log
 | 
						|
 | 
						|
# Later we use binlog to check the order in which statements are
 | 
						|
# executed so let us reset it first.
 | 
						|
reset master;
 | 
						|
--send alter table t1 enable keys;
 | 
						|
connection addconroot;
 | 
						|
let $show_type= PROCESSLIST;
 | 
						|
let $show_pattern= '%Repair by sorting%alter table t1 enable keys%';
 | 
						|
--source include/wait_show_pattern.inc
 | 
						|
# This statement should not be blocked by in-flight ALTER and therefore
 | 
						|
# should be executed and written to binlog before ALTER TABLE ... ENABLE KEYS
 | 
						|
# finishes.
 | 
						|
insert into t2 values (1);
 | 
						|
# And this should wait until the end of ALTER TABLE ... ENABLE KEYS.
 | 
						|
insert into t1 values (1, 1, 1);
 | 
						|
connection default;
 | 
						|
--reap
 | 
						|
# Check that statements were executed/binlogged in correct order.
 | 
						|
--replace_column 2 # 5 #
 | 
						|
show binlog events in 'master-bin.000001' from 102;
 | 
						|
 | 
						|
# Clean up
 | 
						|
drop tables t1, t2;
 | 
						|
 | 
						|
 | 
						|
--echo End of 5.0 tests
 |