GIF89a;
Direktori : /usr/share/mysql-test/suite/innodb_zip/t/ |
Current File : //usr/share/mysql-test/suite/innodb_zip/t/innodb-zip.test |
-- source include/have_innodb.inc let $per_table=`select @@innodb_file_per_table`; let $format=`select @@innodb_file_format`; let $innodb_strict_mode_orig=`select @@session.innodb_strict_mode`; SET @save_innodb_stats_on_metadata=@@global.innodb_stats_on_metadata; --let $query_i_s = SELECT table_schema, table_name, row_format, data_length, index_length FROM information_schema.tables WHERE engine='innodb' AND table_schema != 'mysql' set session innodb_strict_mode=0; set global innodb_file_per_table=off; set global innodb_file_format=`0`; SET @@global.innodb_stats_on_metadata=ON; create table t0(a int primary key) engine=innodb row_format=compressed; create table t00(a int primary key) engine=innodb key_block_size=4 row_format=compressed; create table t1(a int primary key) engine=innodb row_format=dynamic; create table t2(a int primary key) engine=innodb row_format=redundant; create table t3(a int primary key) engine=innodb row_format=compact; create table t4(a int primary key) engine=innodb key_block_size=9; create table t5(a int primary key) engine=innodb key_block_size=1 row_format=redundant; set global innodb_file_per_table=on; create table t6(a int primary key) engine=innodb key_block_size=1 row_format=redundant; set global innodb_file_format=`1`; create table t7(a int primary key) engine=innodb key_block_size=1 row_format=redundant; create table t8(a int primary key) engine=innodb key_block_size=1 row_format=fixed; create table t9(a int primary key) engine=innodb key_block_size=1 row_format=compact; create table t10(a int primary key) engine=innodb key_block_size=1 row_format=dynamic; create table t11(a int primary key) engine=innodb key_block_size=1 row_format=compressed; create table t12(a int primary key) engine=innodb key_block_size=1; create table t13(a int primary key) engine=innodb row_format=compressed; create table t14(a int primary key) engine=innodb key_block_size=9; --replace_result 16384 {valid} 8192 {valid} 4096 {valid} 2048 {valid} --eval $query_i_s drop table t0,t00,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14; alter table t1 key_block_size=0; alter table t1 row_format=dynamic; --replace_result 16384 {valid} 8192 {valid} 4096 {valid} --eval $query_i_s alter table t1 row_format=compact; --replace_result 16384 {valid} 8192 {valid} 4096 {valid} --eval $query_i_s alter table t1 row_format=redundant; --replace_result 16384 {valid} 8192 {valid} 4096 {valid} --eval $query_i_s drop table t1; create table t1(a int not null, b text, index(b(10))) engine=innodb key_block_size=1; create table t2(b text)engine=innodb; insert into t2 values(concat('1abcdefghijklmnopqrstuvwxyz', repeat('A',5000))); insert into t1 select 1, b from t2; commit; connect (a,localhost,root,,); connect (b,localhost,root,,); connection a; begin; update t1 set b=repeat('B',100); connection b; select a,left(b,40) from t1 natural join t2; connection a; rollback; connection b; select a,left(b,40) from t1 natural join t2; connection default; disconnect a; disconnect b; analyze table t1; analyze table t2; --replace_result 16384 {valid} 12288 {valid} --eval $query_i_s drop table t1,t2; # # Bug #50945 moved to innodb_16k.test, innodb_8k.test, & innodb_4k.test # # # Test blob column inheritance (mantis issue#36) # create table t1( c1 int not null, c2 blob, c3 blob, c4 blob, primary key(c1, c2(22), c3(22))) engine = innodb row_format = dynamic; begin; insert into t1 values(1, repeat('A', 20000), repeat('B', 20000), repeat('C', 20000)); update t1 set c3 = repeat('D', 20000) where c1 = 1; commit; # one blob column which is unchanged in update and part of PK # one blob column which is changed and part of of PK # one blob column which is not part of PK and is unchanged select count(*) from t1 where c2 = repeat('A', 20000); select count(*) from t1 where c3 = repeat('D', 20000); select count(*) from t1 where c4 = repeat('C', 20000); update t1 set c3 = repeat('E', 20000) where c1 = 1; drop table t1; # # # Test innodb_file_format # set global innodb_file_format=`0`; select @@innodb_file_format; set global innodb_file_format=`1`; select @@innodb_file_format; -- error ER_WRONG_VALUE_FOR_VAR set global innodb_file_format=`2`; -- error ER_WRONG_VALUE_FOR_VAR set global innodb_file_format=`-1`; set global innodb_file_format=`Antelope`; set global innodb_file_format=`Barracuda`; -- error ER_WRONG_VALUE_FOR_VAR set global innodb_file_format=`Cheetah`; -- error ER_WRONG_VALUE_FOR_VAR set global innodb_file_format=`abc`; -- error ER_WRONG_VALUE_FOR_VAR set global innodb_file_format=`1a`; -- error ER_WRONG_VALUE_FOR_VAR set global innodb_file_format=``; #test strict mode. # this does not work anymore, has been removed from mysqltest # -- enable_errors set global innodb_file_per_table = on; set global innodb_file_format = `1`; set innodb_strict_mode = off; create table t1 (id int primary key) engine = innodb key_block_size = 0; drop table t1; #set strict_mode set innodb_strict_mode = on; #Test different values of KEY_BLOCK_SIZE create table t1 (id int primary key) engine = innodb key_block_size = 0; --error ER_ILLEGAL_HA create table t2 (id int primary key) engine = innodb key_block_size = 9; show warnings; create table t3 (id int primary key) engine = innodb key_block_size = 1; create table t4 (id int primary key) engine = innodb key_block_size = 2; create table t5 (id int primary key) engine = innodb key_block_size = 4; # These tests are now done in innodb_16k, innodb_8k and innodb_4k # where they get different result depending on page size # create table t6 (id int primary key) engine = innodb key_block_size = 8; # create table t7 (id int primary key) engine = innodb key_block_size = 16; #check various ROW_FORMAT values. create table t8 (id int primary key) engine = innodb row_format = compressed; create table t9 (id int primary key) engine = innodb row_format = dynamic; create table t10(id int primary key) engine = innodb row_format = compact; create table t11(id int primary key) engine = innodb row_format = redundant; --replace_result 16384 {valid} 8192 {valid} 4096 {valid} 2048 {valid} --eval $query_i_s drop table t1, t3, t4, t5, t8, t9, t10, t11; #test different values of ROW_FORMAT with KEY_BLOCK_SIZE create table t1 (id int primary key) engine = innodb key_block_size = 4 row_format = compressed; --error ER_ILLEGAL_HA create table t2 (id int primary key) engine = innodb key_block_size = 4 row_format = redundant; show warnings; --error ER_ILLEGAL_HA create table t3 (id int primary key) engine = innodb key_block_size = 4 row_format = compact; show warnings; --error ER_ILLEGAL_HA create table t4 (id int primary key) engine = innodb key_block_size = 4 row_format = dynamic; show warnings; create table t5 (id int primary key) engine = innodb key_block_size = 4 row_format = default; --eval $query_i_s drop table t1, t5; #test multiple errors --error ER_ILLEGAL_HA create table t1 (id int primary key) engine = innodb key_block_size = 9 row_format = redundant; show warnings; --error ER_ILLEGAL_HA create table t2 (id int primary key) engine = innodb key_block_size = 9 row_format = compact; show warnings; --error ER_ILLEGAL_HA create table t2 (id int primary key) engine = innodb key_block_size = 9 row_format = dynamic; show warnings; --eval $query_i_s #test valid values with innodb_file_per_table unset set global innodb_file_per_table = off; --error ER_ILLEGAL_HA create table t1 (id int primary key) engine = innodb key_block_size = 1; show warnings; --error ER_ILLEGAL_HA create table t2 (id int primary key) engine = innodb key_block_size = 2; show warnings; --error ER_ILLEGAL_HA create table t3 (id int primary key) engine = innodb key_block_size = 4; show warnings; # Tests for key_block_size = 8 and 16 were moved to innodb_16k, innodb_8k # and innodb_4k since they get different warnings with smaller page sizes. --error ER_ILLEGAL_HA create table t6 (id int primary key) engine = innodb row_format = compressed; show warnings; --error ER_ILLEGAL_HA create table t7 (id int primary key) engine = innodb row_format = dynamic; show warnings; create table t8 (id int primary key) engine = innodb row_format = compact; create table t9 (id int primary key) engine = innodb row_format = redundant; --replace_result 16384 {valid} 8192 {valid} 4096 {valid} --eval $query_i_s drop table t8, t9; #test valid values with innodb_file_format unset set global innodb_file_per_table = on; set global innodb_file_format = `0`; --error ER_ILLEGAL_HA create table t1 (id int primary key) engine = innodb key_block_size = 1; show warnings; --error ER_ILLEGAL_HA create table t2 (id int primary key) engine = innodb key_block_size = 2; show warnings; --error ER_ILLEGAL_HA create table t3 (id int primary key) engine = innodb key_block_size = 4; show warnings; # Tests for key_block_size = 8 and 16 were moved to innodb_16k, innodb_8k # and innodb_4k since they get different warnings with smaller page sizes. --error ER_ILLEGAL_HA create table t6 (id int primary key) engine = innodb row_format = compressed; show warnings; --error ER_ILLEGAL_HA create table t7 (id int primary key) engine = innodb row_format = dynamic; show warnings; create table t8 (id int primary key) engine = innodb row_format = compact; create table t9 (id int primary key) engine = innodb row_format = redundant; --replace_result 16384 {valid} 8192 {valid} 4096 {valid} --eval $query_i_s drop table t8, t9; eval set global innodb_file_per_table=$per_table; eval set global innodb_file_format=$format; # # Testing of tablespace tagging # -- disable_info set global innodb_file_per_table=on; set global innodb_file_format=`Barracuda`; set global innodb_file_format_max=`Antelope`; create table normal_table ( c1 int ) engine = innodb; select @@innodb_file_format_max; create table zip_table ( c1 int ) engine = innodb key_block_size = 4; select @@innodb_file_format_max; set global innodb_file_format_max=`Antelope`; select @@innodb_file_format_max; -- disable_result_log show table status; -- enable_result_log select @@innodb_file_format_max; drop table normal_table, zip_table; -- disable_result_log # # restore environment to the state it was before this test execution # -- disable_query_log eval set global innodb_file_format=$format; eval set global innodb_file_per_table=$per_table; eval set session innodb_strict_mode=$innodb_strict_mode_orig; SET @@global.innodb_stats_on_metadata=@save_innodb_stats_on_metadata;