set global innodb_file_per_table = off; # files in MYSQL_DATA_DIR ibtmp1 select @@global.innodb_file_per_table; @@global.innodb_file_per_table 0 create temporary table t1 (i int, f float, c char(100)) engine=innodb; insert into t1 values (100, 1.1, 'pune'); insert into t1 values (99, 1.2, 'mumbai'); insert into t1 values (98, 1.3, 'jaipur'); insert into t1 values (97, 1.4, 'delhi'); insert into t1 values (96, 1.5, 'ahmedabad'); select * from t1; i f c 100 1.1 pune 99 1.2 mumbai 98 1.3 jaipur 97 1.4 delhi 96 1.5 ahmedabad select * from t1 where i = 98; i f c 98 1.3 jaipur select * from t1 where i < 100; i f c 99 1.2 mumbai 98 1.3 jaipur 97 1.4 delhi 96 1.5 ahmedabad explain select * from t1 where f > 1.29999; id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 5 33.33 Using where Warnings: Note 1003 /* select#1 */ select `test`.`t1`.`i` AS `i`,`test`.`t1`.`f` AS `f`,`test`.`t1`.`c` AS `c` from `test`.`t1` where (`test`.`t1`.`f` > 1.29999) alter table t1 add index sec_index(f); explain select * from t1 where f > 1.29999; id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 NULL ALL sec_index NULL NULL NULL 5 60.00 Using where Warnings: Note 1003 /* select#1 */ select `test`.`t1`.`i` AS `i`,`test`.`t1`.`f` AS `f`,`test`.`t1`.`c` AS `c` from `test`.`t1` where (`test`.`t1`.`f` > 1.29999) select * from t1 where f > 1.29999; i f c 98 1.3 jaipur 97 1.4 delhi 96 1.5 ahmedabad explain select * from t1 where i = 100; id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 5 20.00 Using where Warnings: Note 1003 /* select#1 */ select `test`.`t1`.`i` AS `i`,`test`.`t1`.`f` AS `f`,`test`.`t1`.`c` AS `c` from `test`.`t1` where (`test`.`t1`.`i` = 100) alter table t1 add unique index pri_index(i); explain select * from t1 where i = 100; id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 NULL const pri_index pri_index 5 const 1 100.00 NULL Warnings: Note 1003 /* select#1 */ select '100' AS `i`,'1.1' AS `f`,'pune' AS `c` from `test`.`t1` where 1 select * from t1 where i = 100; i f c 100 1.1 pune delete from t1 where i < 97; select * from t1; i f c 100 1.1 pune 99 1.2 mumbai 98 1.3 jaipur 97 1.4 delhi insert into t1 values (96, 1.5, 'kolkata'); select * from t1; i f c 100 1.1 pune 99 1.2 mumbai 98 1.3 jaipur 97 1.4 delhi 96 1.5 kolkata update t1 set f = 1.44 where c = 'delhi'; select * from t1; i f c 100 1.1 pune 99 1.2 mumbai 98 1.3 jaipur 97 1.44 delhi 96 1.5 kolkata truncate table t1; insert into t1 values (100, 1.1, 'pune'); insert into t1 values (99, 1.2, 'mumbai'); insert into t1 values (98, 1.3, 'jaipur'); insert into t1 values (97, 1.4, 'delhi'); insert into t1 values (96, 1.5, 'ahmedabad'); select * from t1; i f c 100 1.1 pune 99 1.2 mumbai 98 1.3 jaipur 97 1.4 delhi 96 1.5 ahmedabad alter table t1 discard tablespace; ERROR HY000: Cannot DISCARD/IMPORT tablespace associated with temporary table alter table t1 import tablespace; ERROR HY000: Cannot DISCARD/IMPORT tablespace associated with temporary table drop table t1; #files in MYSQL_TMP_DIR set global innodb_file_per_table = 1; select @@global.innodb_file_per_table; @@global.innodb_file_per_table 1 create temporary table t1 (i int, f float, c char(100)) engine = innodb key_block_size = 4; show create table t1; Table Create Table t1 CREATE TEMPORARY TABLE `t1` ( `i` int(11) DEFAULT NULL, `f` float DEFAULT NULL, `c` char(100) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 KEY_BLOCK_SIZE=4 #files in MYSQL_TMP_DIR #sql.ibd insert into t1 values (100, 1.1, 'pune'); insert into t1 values (99, 1.2, 'mumbai'); insert into t1 values (98, 1.3, 'jaipur'); insert into t1 values (97, 1.4, 'delhi'); insert into t1 values (96, 1.5, 'ahmedabad'); select * from t1; i f c 100 1.1 pune 99 1.2 mumbai 98 1.3 jaipur 97 1.4 delhi 96 1.5 ahmedabad select * from t1 where i = 98; i f c 98 1.3 jaipur select * from t1 where i < 100; i f c 99 1.2 mumbai 98 1.3 jaipur 97 1.4 delhi 96 1.5 ahmedabad explain select * from t1 where f > 1.29999; id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 5 33.33 Using where Warnings: Note 1003 /* select#1 */ select `test`.`t1`.`i` AS `i`,`test`.`t1`.`f` AS `f`,`test`.`t1`.`c` AS `c` from `test`.`t1` where (`test`.`t1`.`f` > 1.29999) alter table t1 add index sec_index(f); explain select * from t1 where f > 1.29999; id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 NULL ALL sec_index NULL NULL NULL 5 60.00 Using where Warnings: Note 1003 /* select#1 */ select `test`.`t1`.`i` AS `i`,`test`.`t1`.`f` AS `f`,`test`.`t1`.`c` AS `c` from `test`.`t1` where (`test`.`t1`.`f` > 1.29999) select * from t1 where f > 1.29999; i f c 98 1.3 jaipur 97 1.4 delhi 96 1.5 ahmedabad explain select * from t1 where i = 100; id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 5 20.00 Using where Warnings: Note 1003 /* select#1 */ select `test`.`t1`.`i` AS `i`,`test`.`t1`.`f` AS `f`,`test`.`t1`.`c` AS `c` from `test`.`t1` where (`test`.`t1`.`i` = 100) alter table t1 add unique index pri_index(i); explain select * from t1 where i = 100; id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 NULL const pri_index pri_index 5 const 1 100.00 NULL Warnings: Note 1003 /* select#1 */ select '100' AS `i`,'1.1' AS `f`,'pune' AS `c` from `test`.`t1` where 1 select * from t1 where i = 100; i f c 100 1.1 pune delete from t1 where i < 97; select * from t1; i f c 100 1.1 pune 99 1.2 mumbai 98 1.3 jaipur 97 1.4 delhi insert into t1 values (96, 1.5, 'kolkata'); select * from t1; i f c 100 1.1 pune 99 1.2 mumbai 98 1.3 jaipur 97 1.4 delhi 96 1.5 kolkata update t1 set f = 1.44 where c = 'delhi'; select * from t1; i f c 100 1.1 pune 99 1.2 mumbai 98 1.3 jaipur 97 1.44 delhi 96 1.5 kolkata truncate table t1; insert into t1 values (100, 1.1, 'pune'); insert into t1 values (99, 1.2, 'mumbai'); insert into t1 values (98, 1.3, 'jaipur'); insert into t1 values (97, 1.4, 'delhi'); insert into t1 values (96, 1.5, 'ahmedabad'); select * from t1; i f c 100 1.1 pune 99 1.2 mumbai 98 1.3 jaipur 97 1.4 delhi 96 1.5 ahmedabad alter table t1 discard tablespace; ERROR HY000: Cannot DISCARD/IMPORT tablespace associated with temporary table drop table t1; set global innodb_file_per_table = off; create temporary table t1 (keyc int, c1 char(100), c2 char(100), primary key(keyc)) engine = innodb; CREATE PROCEDURE populate_t1() BEGIN DECLARE i INT DEFAULT 1; while (i <= 20000) DO insert into t1 values (i, 'a', 'b'); SET i = i + 1; END WHILE; END| set autocommit=0; select count(*) from t1; count(*) 0 call populate_t1(); select count(*) from t1; count(*) 20000 select * from t1 limit 10; keyc c1 c2 1 a b 2 a b 3 a b 4 a b 5 a b 6 a b 7 a b 8 a b 9 a b 10 a b set autocommit=1; truncate table t1; select count(*) from t1; count(*) 0 drop procedure populate_t1; drop table t1; create temporary table t1 (keyc int, c1 char(100), c2 char(100)) engine = innodb; insert into t1 values (1, 'c', 'b'); select * from t1; keyc c1 c2 1 c b # restart # files in MYSQL_DATA_DIR ibtmp1 use test; select * from t1; ERROR 42S02: Table 'test.t1' doesn't exist "testing temp-table creation in --innodb_read_only mode" # restart: --innodb-read-only use test; show tables; Tables_in_test create temporary table t1 (keyc int, c1 char(100), c2 char(100)) engine = innodb; ERROR HY000: InnoDB is in read only mode. "testing system and temp tablespace name conflict" "restarting server in normal mode" # restart show tables; Tables_in_test create temporary table t1 (keyc int, c1 char(100), c2 char(100)) engine = innodb; drop table t1; # test condition of full-temp-tablespace # restart: --innodb_temp_data_file_path=ibtmp1:12M create temporary table t1 (keyc int, c1 char(100), c2 char(100), primary key(keyc)) engine = innodb; CREATE PROCEDURE populate_t1() BEGIN DECLARE i INT DEFAULT 1; while (i <= 20000) DO insert into t1 values (i, 'a', 'b'); SET i = i + 1; END WHILE; END| set autocommit=0; select count(*) from t1; count(*) 0 call populate_t1(); ERROR HY000: The table 't1' is full drop procedure populate_t1; drop table t1; set innodb_strict_mode = off; set global innodb_file_per_table = 0; set global innodb_file_format = 'Antelope'; create temporary table t ( i int) engine = innodb row_format = compressed; show warnings; Level Code Message Warning NUMBER InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_per_table. Warning NUMBER InnoDB: assuming ROW_FORMAT=DYNAMIC. drop table t; create temporary table t ( i int) engine = innodb row_format = compressed key_block_size = 8; show warnings; Level Code Message Warning NUMBER InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table. Warning NUMBER InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope. Warning NUMBER InnoDB: ignoring KEY_BLOCK_SIZE=NUMBER. Warning NUMBER InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_per_table. Warning NUMBER InnoDB: assuming ROW_FORMAT=DYNAMIC. drop table t; set global innodb_file_per_table = 1; create temporary table t ( i int) engine = innodb row_format = compressed key_block_size = 8; show warnings; Level Code Message Warning NUMBER InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope. Warning NUMBER InnoDB: ignoring KEY_BLOCK_SIZE=NUMBER. Warning NUMBER InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope. Warning NUMBER InnoDB: assuming ROW_FORMAT=DYNAMIC. drop table t; create temporary table t ( i int) engine = innodb row_format = dynamic; show warnings; Level Code Message #files in MYSQL_TMP_DIR drop table t; set innodb_strict_mode = on; create temporary table t ( i int) engine = innodb row_format = dynamic; drop table t; set global innodb_file_format = 'Barracuda'; set innodb_strict_mode = off; create temporary table t ( i int) engine = innodb row_format = compressed key_block_size = 8; set innodb_strict_mode = default; #files in MYSQL_TMP_DIR #sql.ibd drop table t; create temporary table t ( i int) engine = innodb row_format = compressed; show warnings; Level Code Message #files in MYSQL_TMP_DIR #sql.ibd drop table t; create temporary table t ( i int) engine = innodb row_format = dynamic; show warnings; Level Code Message #files in MYSQL_TMP_DIR drop table t; set innodb_strict_mode = on; create temporary table t ( i int) engine = innodb row_format = dynamic; show warnings; Level Code Message drop table t; set innodb_strict_mode = off; #files in MYSQL_TMP_DIR create temporary table t ( i int) engine = innodb row_format = dynamic key_block_size = 4; show warnings; Level Code Message Warning NUMBER InnoDB: ignoring KEY_BLOCK_SIZE=NUMBER unless ROW_FORMAT=COMPRESSED. #files in MYSQL_TMP_DIR #sql.ibd drop table t; create temporary table t ( i int) engine = innodb row_format = compact; show warnings; Level Code Message #files in MYSQL_TMP_DIR drop table t; create temporary table t ( i int) engine = innodb key_block_size = 4; show warnings; Level Code Message #files in MYSQL_TMP_DIR #sql.ibd drop table t; "testing temp tablespace non-support for raw device" "testing temp tablespace non-support for raw device" # restart show tables; Tables_in_test create temporary table t1 ( keyc int, c1 char(100), c2 char(100) ) engine = innodb; drop table t1; "try starting server with temp-tablespace size < min. threshold" "try starting server with sys-tablespace size < min. threshold" # restart show tables; Tables_in_test create temporary table t1 ( keyc int, c1 char(100), c2 char(100) ) engine = innodb; drop table t1; "try starting server with no file specified for temp-tablespace" # restart show tables; Tables_in_test create temporary table t1 ( keyc int, c1 char(100), c2 char(100) ) engine = innodb; drop table t1;