summaryrefslogtreecommitdiff
path: root/mysql-test/suite
diff options
context:
space:
mode:
authorVasil Dimov <vasil.dimov@oracle.com>2010-10-18 15:16:23 +0300
committerVasil Dimov <vasil.dimov@oracle.com>2010-10-18 15:16:23 +0300
commit75063440d8c170a3a1e15bbed66bdd0f3f62ff2f (patch)
tree93b74d2719df874fd7d08e09136d1ac49b0c89f3 /mysql-test/suite
parent626b2d6a83fa05fed5ddd1137fc3f8954f920fd8 (diff)
parent50c69f9301840ac8b0c1ede75c1ddba4f53bf39f (diff)
downloadmariadb-git-75063440d8c170a3a1e15bbed66bdd0f3f62ff2f.tar.gz
Merge mysql-5.1-innodb -> mysql-5.5-innodb
Diffstat (limited to 'mysql-test/suite')
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug57252.result6
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug57252.test46
2 files changed, 52 insertions, 0 deletions
diff --git a/mysql-test/suite/innodb/r/innodb_bug57252.result b/mysql-test/suite/innodb/r/innodb_bug57252.result
new file mode 100644
index 00000000000..efa50c742e0
--- /dev/null
+++ b/mysql-test/suite/innodb/r/innodb_bug57252.result
@@ -0,0 +1,6 @@
+cardinality
+10
+Table Op Msg_type Msg_text
+test.bug57252 analyze status OK
+cardinality
+10
diff --git a/mysql-test/suite/innodb/t/innodb_bug57252.test b/mysql-test/suite/innodb/t/innodb_bug57252.test
new file mode 100644
index 00000000000..04c3ed0cea7
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_bug57252.test
@@ -0,0 +1,46 @@
+#
+# 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;
+
+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;