# # Test the persistent stats feature # -- source include/have_innodb.inc -- source include/not_embedded.inc -- disable_warnings -- disable_query_log DROP TABLE IF EXISTS test_innodb_stats; set @save_use_stat_tables= @@use_stat_tables; set @@use_stat_tables= NEVER; CREATE TABLE test_innodb_stats ( a INT, KEY a_key (a) ) ENGINE=INNODB STATS_PERSISTENT=1; -- enable_warnings -- enable_query_log # test empty table -- let $insert = SELECT 'dummy INSERT, the table should be empty' -- source suite/innodb/include/innodb_stats.inc # test table with 1 row -- let $insert = INSERT INTO test_innodb_stats (a) VALUES (1) -- source suite/innodb/include/innodb_stats.inc # test table with 2 eq rows -- let $insert = INSERT INTO test_innodb_stats (a) VALUES (1), (1) -- source suite/innodb/include/innodb_stats.inc # test table with 3 eq rows -- let $insert = INSERT INTO test_innodb_stats (a) VALUES (1), (1), (1) -- source suite/innodb/include/innodb_stats.inc # test table with 10 eq rows -- let $insert = INSERT INTO test_innodb_stats (a) VALUES (1), (1), (1), (1), (1), (1), (1), (1), (1), (1) -- source suite/innodb/include/innodb_stats.inc # test table with 2 diff rows -- let $insert = INSERT INTO test_innodb_stats (a) VALUES (1), (2) -- source suite/innodb/include/innodb_stats.inc # test table with 2 diff rows, 3 rows in total -- let $insert = INSERT INTO test_innodb_stats (a) VALUES (1), (1), (2) -- source suite/innodb/include/innodb_stats.inc # test table with 3 diff rows -- let $insert = INSERT INTO test_innodb_stats (a) VALUES (1), (2), (3) -- source suite/innodb/include/innodb_stats.inc # test table with 3 diff rows, 5 rows in total -- let $insert = INSERT INTO test_innodb_stats (a) VALUES (1), (1), (2), (3), (3) -- source suite/innodb/include/innodb_stats.inc # test table with 5 diff rows, 10 rows in total -- let $insert = INSERT INTO test_innodb_stats (a) VALUES (1), (2), (3), (4), (5), (1), (2), (3), (4), (5) -- source suite/innodb/include/innodb_stats.inc -- disable_query_log DROP TABLE test_innodb_stats; set @@use_stat_tables= @save_use_stat_tables; --enable_query_log --echo # --echo # MDEV-31740 InnoDB statistics column length validation failed --echo # call mtr.add_suppression("InnoDB: Unexpected length of mysql\\.innodb_table_stats\\.last_update"); ALTER TABLE mysql.innodb_table_stats MODIFY LAST_UPDATE DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP(); CREATE TABLE t (a INT KEY)Engine=InnoDB STATS_PERSISTENT=1; let SEARCH_FILE=$MYSQLTEST_VARDIR/log/mysqld.1.err; let SEARCH_PATTERN=InnoDB: Unexpected length of mysql\\.innodb_table_stats\\.last_update; --source include/search_pattern_in_file.inc ALTER TABLE mysql.innodb_table_stats MODIFY last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP(); CREATE TABLE t2(a INT KEY)ENGINE=InnoDB STATS_PERSISTENT= 1; SELECT table_name FROM mysql.innodb_table_stats; DROP TABLE t, t2;