mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	- innodb_sys_tablespaces view in information schema displays temporary tablespace information too.
		
			
				
	
	
		
			150 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			150 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
# 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
 | 
						|
 | 
						|
SET @save_frequency=@@GLOBAL.innodb_purge_rseg_truncate_frequency;
 | 
						|
SET GLOBAL innodb_purge_rseg_truncate_frequency=1;
 | 
						|
LET $MYSQLD_DATADIR = `select @@datadir`;
 | 
						|
LET $INNODB_PAGE_SIZE = `select @@innodb_page_size`;
 | 
						|
 | 
						|
# 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);
 | 
						|
 | 
						|
--source include/wait_all_purged.inc
 | 
						|
 | 
						|
--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);
 | 
						|
 | 
						|
--source include/wait_all_purged.inc
 | 
						|
 | 
						|
--sorted_result
 | 
						|
SELECT name, num_rows, ref_count
 | 
						|
FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
 | 
						|
WHERE name LIKE "%parent";
 | 
						|
 | 
						|
DROP TABLE child;
 | 
						|
 | 
						|
DROP TABLE parent;
 | 
						|
SET GLOBAL innodb_purge_rseg_truncate_frequency=@save_frequency;
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # MDEV-29479  I_S.INNODB_SYS_TABLESPACES doesn't have
 | 
						|
--echo #		temporary tablespace information
 | 
						|
--echo #
 | 
						|
SELECT SPACE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE name like 'innodb_temporary';
 |