# # Check the file open/close LRU code # --source include/have_debug.inc --source include/big_test.inc --source include/have_innodb_max_16k.inc SET default_storage_engine=InnoDB; --disable_query_log SET @open_files = (select @@innodb_open_files); SET @total_tables = @open_files + 250; --enable_query_log SELECT @total_tables; CREATE DATABASE lru_test; USE lru_test; SET GLOBAL innodb_file_per_table = on; DELIMITER |; CREATE PROCEDURE create_tables(IN max_tables INT) BEGIN DECLARE i INT UNSIGNED DEFAULT 0; WHILE i < max_tables DO SET @name = CONCAT("t_", i); SET @sql = CONCAT('CREATE TABLE ', @name, '(c INT) ENGINE=InnoDB'); PREPARE create_table FROM @sql; EXECUTE create_table; DEALLOCATE PREPARE create_table; SET i = i + 1; END WHILE; END| CREATE PROCEDURE ins(IN max_tables INT) BEGIN DECLARE i INT UNSIGNED DEFAULT 0; WHILE i < max_tables DO SET @name = CONCAT("t_", i); SET @sql = CONCAT('INSERT INTO ', @name, ' VALUES(0)'); PREPARE insert_value FROM @sql; EXECUTE insert_value; DEALLOCATE PREPARE insert_value; SET i = i + 1; END WHILE; END| CREATE PROCEDURE sel(IN max_tables INT) BEGIN DECLARE i INT UNSIGNED DEFAULT 0; WHILE i < max_tables DO SET @name = CONCAT("t_", i); SET @sql = CONCAT('SELECT * FROM ', @name); PREPARE select_from FROM @sql; EXECUTE select_from ; DEALLOCATE PREPARE select_from; SET i = i + 1; END WHILE; END| DELIMITER ;| CALL create_tables(@total_tables); CALL ins(@total_tables); CALL sel(@total_tables); DROP PROCEDURE create_tables; DROP PROCEDURE ins; DROP PROCEDURE sel; DROP DATABASE lru_test; --disable_query_log call mtr.add_suppression("Too many .* files are open the maximum allowed value is .*"); --enable_query_log