summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2016-12-04 01:35:57 +0100
committerSergei Golubchik <serg@mariadb.org>2016-12-04 01:35:57 +0100
commite4a0d75a0b72cf08ee98ab7f319c011019bd0c0e (patch)
tree7eb79a27f940a581b9803fab00dfd61091273746
parente99990c631905cd923257331ef124a2bc9276e0d (diff)
downloadmariadb-git-e4a0d75a0b72cf08ee98ab7f319c011019bd0c0e.tar.gz
import a test case from percona-server-5.6.34-79.1
-rw-r--r--mysql-test/extra/table_index_statistics.inc59
-rw-r--r--mysql-test/suite/innodb/r/table_index_statistics.result48
-rw-r--r--mysql-test/suite/innodb/t/table_index_statistics.test8
3 files changed, 115 insertions, 0 deletions
diff --git a/mysql-test/extra/table_index_statistics.inc b/mysql-test/extra/table_index_statistics.inc
new file mode 100644
index 00000000000..67ee4213037
--- /dev/null
+++ b/mysql-test/extra/table_index_statistics.inc
@@ -0,0 +1,59 @@
+# include file to test index and table statstics for specific storage engine
+# requires includer set the default strorage engine for the session
+
+# Bug 602047 (wrong rows_read value)
+
+FLUSH INDEX_STATISTICS;
+FLUSH TABLE_STATISTICS;
+
+SET @userstat_old= @@userstat;
+SET GLOBAL userstat=ON;
+
+CREATE TABLE t1 (id int(10), PRIMARY KEY (id));
+INSERT INTO t1 VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
+SELECT COUNT(*) FROM t1;
+SELECT ROWS_READ FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_NAME='t1';
+SELECT ROWS_READ FROM INFORMATION_SCHEMA.INDEX_STATISTICS WHERE TABLE_NAME='t1';
+
+# Test that FLUSH clears one table but not another
+
+FLUSH TABLE_STATISTICS;
+
+SELECT ROWS_READ FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_NAME='t1';
+SELECT ROWS_READ FROM INFORMATION_SCHEMA.INDEX_STATISTICS WHERE TABLE_NAME='t1';
+
+# Test that FLUSH clears both tables now
+
+FLUSH INDEX_STATISTICS;
+
+SELECT ROWS_READ FROM INFORMATION_SCHEMA.INDEX_STATISTICS WHERE TABLE_NAME='t1';
+
+# Test that stats are collected after the FLUSH again
+
+SELECT COUNT(*) FROM t1;
+SELECT ROWS_READ FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_NAME='t1';
+SELECT ROWS_READ FROM INFORMATION_SCHEMA.INDEX_STATISTICS WHERE TABLE_NAME='t1';
+
+DROP TABLE t1;
+
+# Bug 1183625 (handler::update_global_table_stats crash).
+
+CREATE TABLE t2 (c1 INT UNSIGNED);
+
+ALTER TABLE t2 MODIFY c1 FLOAT;
+
+SELECT * FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_NAME='t2';
+
+DROP TABLE t2;
+
+# Bug 1183625 (handler::update_global_table_stats crash).
+
+CREATE TABLE t2 (c1 INT UNSIGNED) ENGINE=InnoDB;
+
+ALTER TABLE t2 MODIFY c1 FLOAT;
+
+SELECT * FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_NAME='t2';
+
+DROP TABLE t2;
+
+SET GLOBAL userstat= @userstat_old;
diff --git a/mysql-test/suite/innodb/r/table_index_statistics.result b/mysql-test/suite/innodb/r/table_index_statistics.result
new file mode 100644
index 00000000000..7389a11713a
--- /dev/null
+++ b/mysql-test/suite/innodb/r/table_index_statistics.result
@@ -0,0 +1,48 @@
+SET @default_storage_engine_old = @@session.default_storage_engine;
+SET SESSION default_storage_engine = INNODB;
+FLUSH INDEX_STATISTICS;
+FLUSH TABLE_STATISTICS;
+SET @userstat_old= @@userstat;
+SET GLOBAL userstat=ON;
+CREATE TABLE t1 (id int(10), PRIMARY KEY (id));
+INSERT INTO t1 VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+10
+SELECT ROWS_READ FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_NAME='t1';
+ROWS_READ
+10
+SELECT ROWS_READ FROM INFORMATION_SCHEMA.INDEX_STATISTICS WHERE TABLE_NAME='t1';
+ROWS_READ
+10
+FLUSH TABLE_STATISTICS;
+SELECT ROWS_READ FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_NAME='t1';
+ROWS_READ
+SELECT ROWS_READ FROM INFORMATION_SCHEMA.INDEX_STATISTICS WHERE TABLE_NAME='t1';
+ROWS_READ
+10
+FLUSH INDEX_STATISTICS;
+SELECT ROWS_READ FROM INFORMATION_SCHEMA.INDEX_STATISTICS WHERE TABLE_NAME='t1';
+ROWS_READ
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+10
+SELECT ROWS_READ FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_NAME='t1';
+ROWS_READ
+10
+SELECT ROWS_READ FROM INFORMATION_SCHEMA.INDEX_STATISTICS WHERE TABLE_NAME='t1';
+ROWS_READ
+10
+DROP TABLE t1;
+CREATE TABLE t2 (c1 INT UNSIGNED);
+ALTER TABLE t2 MODIFY c1 FLOAT;
+SELECT * FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_NAME='t2';
+TABLE_SCHEMA TABLE_NAME ROWS_READ ROWS_CHANGED ROWS_CHANGED_X_INDEXES
+DROP TABLE t2;
+CREATE TABLE t2 (c1 INT UNSIGNED) ENGINE=InnoDB;
+ALTER TABLE t2 MODIFY c1 FLOAT;
+SELECT * FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_NAME='t2';
+TABLE_SCHEMA TABLE_NAME ROWS_READ ROWS_CHANGED ROWS_CHANGED_X_INDEXES
+DROP TABLE t2;
+SET GLOBAL userstat= @userstat_old;
+SET SESSION default_storage_engine = @default_storage_engine_old;
diff --git a/mysql-test/suite/innodb/t/table_index_statistics.test b/mysql-test/suite/innodb/t/table_index_statistics.test
new file mode 100644
index 00000000000..af6f1946486
--- /dev/null
+++ b/mysql-test/suite/innodb/t/table_index_statistics.test
@@ -0,0 +1,8 @@
+--source include/have_innodb.inc
+
+SET @default_storage_engine_old = @@session.default_storage_engine;
+SET SESSION default_storage_engine = INNODB;
+
+--source extra/table_index_statistics.inc
+
+SET SESSION default_storage_engine = @default_storage_engine_old;