diff options
author | unknown <aivanov@mysql.com> | 2005-12-12 21:06:59 +0300 |
---|---|---|
committer | unknown <aivanov@mysql.com> | 2005-12-12 21:06:59 +0300 |
commit | bb69e6ff656e495eb074477d6c1da111cb1624de (patch) | |
tree | 35392e37ca8b9a00df52afbe11acee443b2f1edb /mysql-test | |
parent | 30b95ec01a80b12f284d9300c5666a2686eb3b7d (diff) | |
download | mariadb-git-bb69e6ff656e495eb074477d6c1da111cb1624de.tar.gz |
Fix BUG#12071: "Windows hang: 'Opening tables' or 'Waiting for
table' lockup".
Changes from the innodb-4.1-ss11 snapshot.
Do not call os_file-create_tmpfile() at runtime. Instead, create
a tempfile at startup and guard access to it with a mutex.
Also, fix bugs:
10511: "Wrong padding of UCS2 CHAR columns in ON UPDATE CASCADE";
13778: "If FOREIGN_KEY_CHECKS=0, one can create inconsistent FOREIGN
KEYs". When FOREIGN_KEY_CHECKS=0 we still need to check that
datatypes between foreign key references are compatible.
Also, added test cases (also for bug 9802).
innobase/dict/dict0dict.c:
Changes from the innodb-4.1-ss11 snapshot
innobase/dict/dict0load.c:
Changes from the innodb-4.1-ss11 snapshot
innobase/include/dict0dict.h:
Changes from the innodb-4.1-ss11 snapshot
innobase/include/dict0load.h:
Changes from the innodb-4.1-ss11 snapshot
innobase/include/os0file.h:
Changes from the innodb-4.1-ss11 snapshot
innobase/include/rem0cmp.h:
Changes from the innodb-4.1-ss11 snapshot
innobase/include/srv0srv.h:
Changes from the innodb-4.1-ss11 snapshot
innobase/rem/rem0cmp.c:
Changes from the innodb-4.1-ss11 snapshot
innobase/row/row0ins.c:
Changes from the innodb-4.1-ss11 snapshot
innobase/row/row0mysql.c:
Changes from the innodb-4.1-ss11 snapshot
innobase/srv/srv0srv.c:
Changes from the innodb-4.1-ss11 snapshot
innobase/srv/srv0start.c:
Changes from the innodb-4.1-ss11 snapshot
libmysqld/ha_blackhole.cc:
Changes from the innodb-4.1-ss11 snapshot
mysql-test/r/innodb.result:
Changes from the innodb-4.1-ss11 snapshot
mysql-test/t/innodb.test:
Changes from the innodb-4.1-ss11 snapshot
sql/ha_innodb.cc:
Changes from the innodb-4.1-ss11 snapshot
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/r/innodb.result | 32 | ||||
-rw-r--r-- | mysql-test/t/innodb.test | 49 |
2 files changed, 81 insertions, 0 deletions
diff --git a/mysql-test/r/innodb.result b/mysql-test/r/innodb.result index ca78d23e6dc..b43d00bda1c 100644 --- a/mysql-test/r/innodb.result +++ b/mysql-test/r/innodb.result @@ -1722,3 +1722,35 @@ checksum table test_checksum; Table Checksum test.test_checksum 2050879373 drop table test_checksum; +set foreign_key_checks=0; +create table t2 (a int primary key, b int, foreign key (b) references t1(a)) engine = innodb; +create table t1(a char(10) primary key, b varchar(20)) engine = innodb; +ERROR HY000: Can't create table './test/t1.frm' (errno: 150) +set foreign_key_checks=1; +drop table t2; +set foreign_key_checks=0; +create table t1(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=latin1; +create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=utf8; +ERROR HY000: Can't create table './test/t2.frm' (errno: 150) +set foreign_key_checks=1; +drop table t1; +set foreign_key_checks=0; +create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb; +create table t1(a varchar(10) primary key) engine = innodb; +alter table t1 modify column a int; +Got one of the listed errors +set foreign_key_checks=1; +drop table t2,t1; +set foreign_key_checks=0; +create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=latin1; +create table t1(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=latin1; +alter table t1 convert to character set utf8; +set foreign_key_checks=1; +drop table t2,t1; +set foreign_key_checks=0; +create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=latin1; +create table t3(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=utf8; +rename table t3 to t1; +ERROR HY000: Error on rename of './test/t3' to './test/t1' (errno: 150) +set foreign_key_checks=1; +drop table t2,t3; diff --git a/mysql-test/t/innodb.test b/mysql-test/t/innodb.test index 3a693968769..03aa113c662 100644 --- a/mysql-test/t/innodb.test +++ b/mysql-test/t/innodb.test @@ -1280,4 +1280,53 @@ connection a; checksum table test_checksum; drop table test_checksum; +# tests for bugs #9802 and #13778 + +# test that FKs between invalid types are not accepted + +set foreign_key_checks=0; +create table t2 (a int primary key, b int, foreign key (b) references t1(a)) engine = innodb; +-- error 1005 +create table t1(a char(10) primary key, b varchar(20)) engine = innodb; +set foreign_key_checks=1; +drop table t2; + +# test that FKs between different charsets are not accepted in CREATE even +# when f_k_c is 0 + +set foreign_key_checks=0; +create table t1(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=latin1; +-- error 1005 +create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=utf8; +set foreign_key_checks=1; +drop table t1; + +# test that invalid datatype conversions with ALTER are not allowed + +set foreign_key_checks=0; +create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb; +create table t1(a varchar(10) primary key) engine = innodb; +-- error 1025,1025 +alter table t1 modify column a int; +set foreign_key_checks=1; +drop table t2,t1; + +# test that charset conversions with ALTER are allowed when f_k_c is 0 + +set foreign_key_checks=0; +create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=latin1; +create table t1(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=latin1; +alter table t1 convert to character set utf8; +set foreign_key_checks=1; +drop table t2,t1; + +# test that RENAME does not allow invalid charsets when f_k_c is 0 + +set foreign_key_checks=0; +create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=latin1; +create table t3(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=utf8; +-- error 1025 +rename table t3 to t1; +set foreign_key_checks=1; +drop table t2,t3; # End of 4.1 tests |