# # Test the persistent stats feature when DROPping a table or an # index when the corresponding rows in the stats tables are locked # -- source include/have_innodb.inc CREATE DATABASE unlocked; CREATE TABLE unlocked.t1(a INT PRIMARY KEY) ENGINE=INNODB STATS_PERSISTENT=0; CREATE DATABASE locked; CREATE TABLE locked.t1(a INT PRIMARY KEY) ENGINE=INNODB STATS_PERSISTENT=1; CREATE TABLE innodb_stats_drop_locked (c INT, KEY c_key (c)) ENGINE=INNODB STATS_PERSISTENT=1; ANALYZE TABLE innodb_stats_drop_locked; BEGIN; SELECT table_name FROM mysql.innodb_table_stats WHERE table_name='innodb_stats_drop_locked' FOR UPDATE; SELECT table_name FROM mysql.innodb_index_stats WHERE table_name='innodb_stats_drop_locked' FOR UPDATE; -- connect (con1,localhost,root,,) SET innodb_lock_wait_timeout=1; --error ER_LOCK_WAIT_TIMEOUT ALTER TABLE innodb_stats_drop_locked DROP INDEX c_key; # the index should be gone SHOW CREATE TABLE innodb_stats_drop_locked; --error ER_LOCK_WAIT_TIMEOUT DROP TABLE innodb_stats_drop_locked; DROP DATABASE unlocked; --error ER_LOCK_WAIT_TIMEOUT DROP DATABASE locked; -- disconnect con1 -- connection default COMMIT; DROP DATABASE locked; # the stats should be there SELECT table_name FROM mysql.innodb_table_stats WHERE table_name='innodb_stats_drop_locked'; SELECT table_name FROM mysql.innodb_index_stats WHERE table_name='innodb_stats_drop_locked'; ALTER TABLE innodb_stats_drop_locked DROP INDEX c_key; SELECT table_name FROM mysql.innodb_index_stats WHERE table_name='innodb_stats_drop_locked'; DROP TABLE innodb_stats_drop_locked; SELECT table_name FROM mysql.innodb_table_stats WHERE table_name='innodb_stats_drop_locked'; SELECT table_name FROM mysql.innodb_index_stats WHERE table_name='innodb_stats_drop_locked';