Loading mysql-test/r/create.result +16 −0 Original line number Diff line number Diff line Loading @@ -1503,4 +1503,20 @@ t1 CREATE TABLE `t1` ( `c17` int(11) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; Bug #26104 Bug on foreign key class constructor Check that ref_columns is initalized correctly in the constructor and semantic checks in mysql_prepare_table work. We do not need a storage engine that supports foreign keys for this test, as the checks are purely syntax-based, and the syntax is supported for all engines. drop table if exists t1,t2; create table t1(a int not null, b int not null, primary key (a, b)); create table t2(a int not null, b int not null, c int not null, primary key (a), foreign key fk_bug26104 (b,c) references t1(a)); ERROR 42000: Incorrect foreign key definition for 'fk_bug26104': Key reference and table reference don't match drop table t1; End of 5.0 tests mysql-test/r/innodb.result +1 −1 Original line number Diff line number Diff line Loading @@ -1648,7 +1648,7 @@ t2 CREATE TABLE `t2` ( ) ENGINE=InnoDB DEFAULT CHARSET=latin1 drop table t2; create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = innodb; ERROR HY000: Can't create table './test/t2' (errno: 150) ERROR 42000: Incorrect foreign key definition for 't1_id_fk': Key reference and table reference don't match create table t2 (a int auto_increment primary key, b int, index(b), foreign key (b) references t1(id), unique(b)) engine=innodb; show create table t2; Table Create Table Loading mysql-test/t/create.test +19 −0 Original line number Diff line number Diff line Loading @@ -1118,5 +1118,24 @@ show create table t1; drop table t1; --echo --echo Bug #26104 Bug on foreign key class constructor --echo --echo Check that ref_columns is initalized correctly in the constructor --echo and semantic checks in mysql_prepare_table work. --echo --echo We do not need a storage engine that supports foreign keys --echo for this test, as the checks are purely syntax-based, and the --echo syntax is supported for all engines. --echo --disable_warnings drop table if exists t1,t2; --enable_warnings create table t1(a int not null, b int not null, primary key (a, b)); --error ER_WRONG_FK_DEF create table t2(a int not null, b int not null, c int not null, primary key (a), foreign key fk_bug26104 (b,c) references t1(a)); drop table t1; --echo End of 5.0 tests mysql-test/t/innodb.test +1 −1 Original line number Diff line number Diff line Loading @@ -1180,7 +1180,7 @@ drop table t2; # Clean up filename -- embedded server reports whole path without .frm, # regular server reports relative path with .frm (argh!) --replace_result \\ / $MYSQL_TEST_DIR . /var/master-data/ / t2.frm t2 --error 1005 --error ER_WRONG_FK_DEF create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = innodb; # bug#3749 Loading sql/sql_class.h +1 −1 Original line number Diff line number Diff line Loading @@ -450,7 +450,7 @@ class foreign_key: public Key { Table_ident *table, List<key_part_spec> &ref_cols, uint delete_opt_arg, uint update_opt_arg, uint match_opt_arg) :Key(FOREIGN_KEY, name_arg, HA_KEY_ALG_UNDEF, 0, cols), ref_table(table), ref_columns(cols), ref_table(table), ref_columns(ref_cols), delete_opt(delete_opt_arg), update_opt(update_opt_arg), match_opt(match_opt_arg) {} Loading Loading
mysql-test/r/create.result +16 −0 Original line number Diff line number Diff line Loading @@ -1503,4 +1503,20 @@ t1 CREATE TABLE `t1` ( `c17` int(11) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; Bug #26104 Bug on foreign key class constructor Check that ref_columns is initalized correctly in the constructor and semantic checks in mysql_prepare_table work. We do not need a storage engine that supports foreign keys for this test, as the checks are purely syntax-based, and the syntax is supported for all engines. drop table if exists t1,t2; create table t1(a int not null, b int not null, primary key (a, b)); create table t2(a int not null, b int not null, c int not null, primary key (a), foreign key fk_bug26104 (b,c) references t1(a)); ERROR 42000: Incorrect foreign key definition for 'fk_bug26104': Key reference and table reference don't match drop table t1; End of 5.0 tests
mysql-test/r/innodb.result +1 −1 Original line number Diff line number Diff line Loading @@ -1648,7 +1648,7 @@ t2 CREATE TABLE `t2` ( ) ENGINE=InnoDB DEFAULT CHARSET=latin1 drop table t2; create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = innodb; ERROR HY000: Can't create table './test/t2' (errno: 150) ERROR 42000: Incorrect foreign key definition for 't1_id_fk': Key reference and table reference don't match create table t2 (a int auto_increment primary key, b int, index(b), foreign key (b) references t1(id), unique(b)) engine=innodb; show create table t2; Table Create Table Loading
mysql-test/t/create.test +19 −0 Original line number Diff line number Diff line Loading @@ -1118,5 +1118,24 @@ show create table t1; drop table t1; --echo --echo Bug #26104 Bug on foreign key class constructor --echo --echo Check that ref_columns is initalized correctly in the constructor --echo and semantic checks in mysql_prepare_table work. --echo --echo We do not need a storage engine that supports foreign keys --echo for this test, as the checks are purely syntax-based, and the --echo syntax is supported for all engines. --echo --disable_warnings drop table if exists t1,t2; --enable_warnings create table t1(a int not null, b int not null, primary key (a, b)); --error ER_WRONG_FK_DEF create table t2(a int not null, b int not null, c int not null, primary key (a), foreign key fk_bug26104 (b,c) references t1(a)); drop table t1; --echo End of 5.0 tests
mysql-test/t/innodb.test +1 −1 Original line number Diff line number Diff line Loading @@ -1180,7 +1180,7 @@ drop table t2; # Clean up filename -- embedded server reports whole path without .frm, # regular server reports relative path with .frm (argh!) --replace_result \\ / $MYSQL_TEST_DIR . /var/master-data/ / t2.frm t2 --error 1005 --error ER_WRONG_FK_DEF create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = innodb; # bug#3749 Loading
sql/sql_class.h +1 −1 Original line number Diff line number Diff line Loading @@ -450,7 +450,7 @@ class foreign_key: public Key { Table_ident *table, List<key_part_spec> &ref_cols, uint delete_opt_arg, uint update_opt_arg, uint match_opt_arg) :Key(FOREIGN_KEY, name_arg, HA_KEY_ALG_UNDEF, 0, cols), ref_table(table), ref_columns(cols), ref_table(table), ref_columns(ref_cols), delete_opt(delete_opt_arg), update_opt(update_opt_arg), match_opt(match_opt_arg) {} Loading