mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
A fix and a test case for Bug#26104 Bug on foreign key class constructor.
Fix the typo in the constructor. Cover a semantic check that previously never worked with a test. mysql-test/r/create.result: Update results (Bug#26104) mysql-test/r/innodb.result: Update results. mysql-test/t/create.test: Add a test case for Bug#26104 Bug on foreign key class constructor mysql-test/t/innodb.test: Return a new error number (MySQL error instead of internal InnoDB error). sql/sql_class.h: A fix for Bug#26104 Bug on foreign key class constructor -- fix the typo in the constructor
This commit is contained in:
parent
5f462f9626
commit
c0277a1192
5 changed files with 38 additions and 3 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -450,7 +450,7 @@ public:
|
|||
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…
Reference in a new issue