Skip to content

Commit

Permalink
import a test case from percona-server-5.6.34-79.1
Browse files Browse the repository at this point in the history
  • Loading branch information
vuvova committed Dec 4, 2016
1 parent e99990c commit e4a0d75
Show file tree
Hide file tree
Showing 3 changed files with 115 additions and 0 deletions.
59 changes: 59 additions & 0 deletions 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;
48 changes: 48 additions & 0 deletions 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;
8 changes: 8 additions & 0 deletions 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;

0 comments on commit e4a0d75

Please sign in to comment.