419 lines
12 KiB
Plaintext

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<temporary>.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<temporary>.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<temporary>.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<temporary>.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<temporary>.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;