Current Path : /home/usr.opt/mysql57/mysql-test/suite/innodb/t/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //home/usr.opt/mysql57/mysql-test/suite/innodb/t/innodb_bug57252.test |
# # Bug#57252 disabling innobase_stats_on_metadata disables ANALYZE # http://bugs.mysql.com/57252 # -- source include/have_innodb.inc -- disable_query_log -- disable_result_log SET @innodb_stats_on_metadata_orig = @@innodb_stats_on_metadata; CREATE TABLE bug57252 (a INT, KEY akey (a)) ENGINE=INNODB STATS_PERSISTENT=0; BEGIN; let $i = 10; while ($i) { eval INSERT INTO bug57252 VALUES ($i); dec $i; } COMMIT; -- enable_result_log SET GLOBAL innodb_stats_on_metadata=0; # this calls ::info() without HA_STATUS_CONST and so # index->stat_n_diff_key_vals[] is not copied to the mysql-visible # rec_per_key SELECT cardinality FROM information_schema.statistics WHERE table_name='bug57252' AND index_name='akey'; # this calls ::info() with HA_STATUS_CONST and so # index->stat_n_diff_key_vals[] is copied to the mysql-visible # rec_per_key at the end; when the bug is present dict_update_statistics() # is not called beforehand and so index->stat_n_diff_key_vals[] contains # an outdated data and thus we get an outdated data in the result when the # bug is present ANALYZE TABLE bug57252; SELECT cardinality FROM information_schema.statistics WHERE table_name='bug57252' AND index_name='akey'; DROP TABLE bug57252; SET GLOBAL innodb_stats_on_metadata = @innodb_stats_on_metadata_orig;