mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			137 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			137 lines
		
	
	
		
			4.4 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
 | |
| 
 | |
| 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);
 | |
| 
 | |
| --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;
 |