mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
MDEV-13625: Adapt the test innodb-system-table-view
This commit is contained in:
139
mysql-test/suite/innodb/t/innodb-system-table-view.test
Normal file
139
mysql-test/suite/innodb/t/innodb-system-table-view.test
Normal file
@ -0,0 +1,139 @@
|
||||
# This is the test for Information Schema System Table View
|
||||
# that displays the InnoDB system table content through
|
||||
# information schema tables.
|
||||
|
||||
--source include/innodb_page_size_small.inc
|
||||
|
||||
--disable_query_log
|
||||
SET default_storage_engine=InnoDB;
|
||||
LET $MYSQLD_DATADIR = `select @@datadir`;
|
||||
LET $INNODB_PAGE_SIZE = `select @@innodb_page_size`;
|
||||
--enable_query_log
|
||||
|
||||
# The IDs of mysql.innodb_table_stats and mysql.innodb_index_stats may
|
||||
# vary depending on whether the tables have been rebuilt
|
||||
# by previously run tests.
|
||||
SELECT table_id INTO @table_stats_id FROM information_schema.innodb_sys_tables
|
||||
WHERE name = 'mysql/innodb_table_stats';
|
||||
SELECT table_id INTO @index_stats_id FROM information_schema.innodb_sys_tables
|
||||
WHERE name = 'mysql/innodb_index_stats';
|
||||
|
||||
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES
|
||||
WHERE table_id NOT IN (@table_stats_id, @index_stats_id) ORDER BY table_id;
|
||||
|
||||
SELECT table_id,pos,mtype,prtype,len,name
|
||||
FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS
|
||||
WHERE table_id NOT IN (@table_stats_id, @index_stats_id)
|
||||
ORDER BY table_id, pos;
|
||||
|
||||
--replace_column 1 # 3 # 6 # 7 #
|
||||
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES
|
||||
WHERE table_id NOT IN (@table_stats_id, @index_stats_id) ORDER BY index_id;
|
||||
|
||||
SELECT index_id,pos,name FROM INFORMATION_SCHEMA.INNODB_SYS_FIELDS
|
||||
WHERE name NOT IN ('database_name', 'table_name', 'index_name', 'stat_name')
|
||||
ORDER BY index_id, pos;
|
||||
|
||||
--sorted_result
|
||||
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN;
|
||||
--sorted_result
|
||||
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS;
|
||||
|
||||
CREATE TABLE t_redundant (a INT KEY, b TEXT) ROW_FORMAT=REDUNDANT ENGINE=innodb;
|
||||
CREATE TABLE t_compact (a INT KEY, b TEXT) ROW_FORMAT=COMPACT ENGINE=innodb;
|
||||
CREATE TABLE t_compressed (a INT KEY, b TEXT) ROW_FORMAT=COMPRESSED ENGINE=innodb KEY_BLOCK_SIZE=2;
|
||||
CREATE TABLE t_dynamic (a INT KEY, b TEXT) ROW_FORMAT=DYNAMIC ENGINE=innodb;
|
||||
|
||||
--source suite/innodb/include/show_i_s_tables.inc
|
||||
--source suite/innodb/include/show_i_s_tablespaces.inc
|
||||
|
||||
DROP TABLE t_redundant, t_compact, t_compressed, t_dynamic;
|
||||
|
||||
SELECT count(*) FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS;
|
||||
|
||||
# Create a foreign key constraint, and verify the information
|
||||
# in INFORMATION_SCHEMA.INNODB_SYS_FOREIGN and
|
||||
# INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS
|
||||
CREATE TABLE parent (id INT NOT NULL,
|
||||
PRIMARY KEY (id)) ENGINE=INNODB;
|
||||
|
||||
CREATE TABLE child (id INT, parent_id INT,
|
||||
INDEX par_ind (parent_id),
|
||||
CONSTRAINT constraint_test
|
||||
FOREIGN KEY (parent_id) REFERENCES parent(id)
|
||||
ON DELETE CASCADE) ENGINE=INNODB;
|
||||
|
||||
--sorted_result
|
||||
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN;
|
||||
|
||||
--sorted_result
|
||||
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS;
|
||||
|
||||
# Insert a row in the table "parent", and see whether that reflected in
|
||||
# INNODB_SYS_TABLESTATS
|
||||
INSERT INTO parent VALUES(1);
|
||||
|
||||
--sorted_result
|
||||
SELECT name, num_rows, ref_count
|
||||
FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
|
||||
WHERE name LIKE "%parent";
|
||||
|
||||
--sorted_result
|
||||
SELECT NAME, FLAG, N_COLS FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES
|
||||
WHERE name NOT LIKE 'sys/%';
|
||||
|
||||
--sorted_result
|
||||
SELECT name, n_fields
|
||||
from INFORMATION_SCHEMA.INNODB_SYS_INDEXES
|
||||
WHERE table_id In (SELECT table_id from
|
||||
INFORMATION_SCHEMA.INNODB_SYS_TABLES
|
||||
WHERE name LIKE "%parent%");
|
||||
|
||||
--sorted_result
|
||||
SELECT name, n_fields
|
||||
from INFORMATION_SCHEMA.INNODB_SYS_INDEXES
|
||||
WHERE table_id In (SELECT table_id from
|
||||
INFORMATION_SCHEMA.INNODB_SYS_TABLES
|
||||
WHERE name LIKE "%child%");
|
||||
|
||||
--sorted_result
|
||||
SELECT name, pos, mtype, len
|
||||
from INFORMATION_SCHEMA.INNODB_SYS_COLUMNS
|
||||
WHERE table_id In (SELECT table_id from
|
||||
INFORMATION_SCHEMA.INNODB_SYS_TABLES
|
||||
WHERE name LIKE "%child%");
|
||||
|
||||
DROP TABLE child;
|
||||
|
||||
DROP TABLE parent;
|
||||
|
||||
# Create table with 2 columns in the foreign key constraint
|
||||
CREATE TABLE parent (id INT NOT NULL, newid INT NOT NULL,
|
||||
PRIMARY KEY (id, newid)) ENGINE=INNODB;
|
||||
|
||||
CREATE TABLE child (id INT, parent_id INT,
|
||||
INDEX par_ind (parent_id),
|
||||
CONSTRAINT constraint_test
|
||||
FOREIGN KEY (id, parent_id) REFERENCES parent(id, newid)
|
||||
ON DELETE CASCADE) ENGINE=INNODB;
|
||||
|
||||
--sorted_result
|
||||
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN;
|
||||
|
||||
--sorted_result
|
||||
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS;
|
||||
|
||||
INSERT INTO parent VALUES(1, 9);
|
||||
|
||||
# Nested query will open the table handle twice
|
||||
--sorted_result
|
||||
SELECT * FROM parent WHERE id IN (SELECT id FROM parent);
|
||||
|
||||
--sorted_result
|
||||
SELECT name, num_rows, ref_count
|
||||
FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
|
||||
WHERE name LIKE "%parent";
|
||||
|
||||
DROP TABLE child;
|
||||
|
||||
DROP TABLE parent;
|
Reference in New Issue
Block a user