diff --git a/mysql-test/lib/mtr_cases.pl b/mysql-test/lib/mtr_cases.pl index 448ca90d48d..2d7c880bad7 100644 --- a/mysql-test/lib/mtr_cases.pl +++ b/mysql-test/lib/mtr_cases.pl @@ -455,6 +455,10 @@ sub collect_one_test_case($$$$$$$) { "Test case '$tname' is skipped."); } } + else + { + mtr_options_from_test_file($tinfo,"$testdir/${tname}.test"); + } # We can't restart a running server that may be in use @@ -463,7 +467,46 @@ sub collect_one_test_case($$$$$$$) { { $tinfo->{'skip'}= 1; } + } +sub mtr_options_from_test_file($$$) { + my $tinfo= shift; + my $file= shift; + + open(FILE,"<",$file) or mtr_error("can't open file \"$file\": $!"); + my @args; + while ( ) + { + chomp; + + # Check if test uses innodb + if ( defined mtr_match_substring($_,"include/have_innodb.inc")) + { + $tinfo->{'innodb_test'} = 1; + } + + # If test sources another file, open it as well + my $value= mtr_match_prefix($_, "--source"); + if ( defined $value) + { + $value=~ s/^\s+//; # Remove leading space + $value=~ s/\s+$//; # Remove ending space + + my $sourced_file= "$::glob_mysql_test_dir/$value"; + mtr_options_from_test_file($tinfo, $sourced_file); + } + + } + close FILE; + + if ( ! $tinfo->{'innodb_test'} ) + { + # mtr_report("Adding '--skip-innodb' to $tinfo->{'name'}"); + push(@{$tinfo->{'master_opt'}}, "--skip-innodb"); + } + + +} 1; diff --git a/mysql-test/r/create.result b/mysql-test/r/create.result index d45960cf787..41baeedf3f8 100644 --- a/mysql-test/r/create.result +++ b/mysql-test/r/create.result @@ -772,9 +772,3 @@ t1 CREATE TABLE `t1` ( `i` int(11) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 MAX_ROWS=4294967295 drop table t1; -create table t1(f1 varchar(800) binary not null, key(f1)) engine = innodb -character set utf8 collate utf8_general_ci; -Warnings: -Warning 1071 Specified key was too long; max key length is 765 bytes -insert into t1 values('aaa'); -drop table t1; diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/r/innodb_mysql.result index 2a4e3555e3b..fe0f78d5ac1 100644 --- a/mysql-test/r/innodb_mysql.result +++ b/mysql-test/r/innodb_mysql.result @@ -54,3 +54,9 @@ c.c_id = 218 and expiredate is null; slai_id 12 drop table t1, t2; +create table t1(f1 varchar(800) binary not null, key(f1)) engine = innodb +character set utf8 collate utf8_general_ci; +Warnings: +Warning 1071 Specified key was too long; max key length is 765 bytes +insert into t1 values('aaa'); +drop table t1; diff --git a/mysql-test/t/create.test b/mysql-test/t/create.test index fe8cfe70c4e..802987eabc9 100644 --- a/mysql-test/t/create.test +++ b/mysql-test/t/create.test @@ -667,12 +667,5 @@ alter table t1 max_rows=100000000000; show create table t1; drop table t1; -# -# Bug#17530: Incorrect key truncation on table creation caused server crash. -# -create table t1(f1 varchar(800) binary not null, key(f1)) engine = innodb - character set utf8 collate utf8_general_ci; -insert into t1 values('aaa'); -drop table t1; # End of 5.0 tests diff --git a/mysql-test/t/innodb_mysql.test b/mysql-test/t/innodb_mysql.test index f31e4d64789..0237913dfc9 100644 --- a/mysql-test/t/innodb_mysql.test +++ b/mysql-test/t/innodb_mysql.test @@ -57,3 +57,12 @@ where c.c_id = 218 and expiredate is null; drop table t1, t2; + + +# +# Bug#17530: Incorrect key truncation on table creation caused server crash. +# +create table t1(f1 varchar(800) binary not null, key(f1)) engine = innodb + character set utf8 collate utf8_general_ci; +insert into t1 values('aaa'); +drop table t1;