mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
c1a54d976a
global 'opening tables' lock." after merging it into 5.1 tree. mysql-test/r/alter_table-big.result: Fixed "show binlog events" usage as 5.1 and 5.0 sizes of binlog events differ. mysql-test/t/alter_table-big.test: This test needs statement based binlogging. Also fixed "show binlog events" usage as 5.1 and 5.0 sizes of binlog events differ.
62 lines
1.9 KiB
Text
62 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.
|
|
--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
|