mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 21:12:26 +01:00
63 lines
1.9 KiB
Text
63 lines
1.9 KiB
Text
|
# 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.
|
||
|
# Also in 5.1 this test will require statement-based binlog.
|
||
|
--source include/big_test.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 98;
|
||
|
|
||
|
# Clean up
|
||
|
drop tables t1, t2;
|
||
|
|
||
|
|
||
|
--echo End of 5.0 tests
|