3919 Pekka Nousiainen 2012-09-22
wl#6244 errcode5.diff
column compatibility (from Jul 2 patch)
modified:
mysql-test/suite/ndb/r/ndb_fk_bugs.result
mysql-test/suite/ndb/t/ndb_fk_bugs.test
sql/ha_ndb_ddl_fk.cc
3918 Pekka Nousiainen 2012-09-20
wl#6244 errcode4.diff
bug#14124623 test case from bug report
modified:
mysql-test/suite/ndb/r/ndb_fk_bugs.result
mysql-test/suite/ndb/t/ndb_fk_bugs.test
=== modified file 'mysql-test/suite/ndb/r/ndb_fk_bugs.result'
--- a/mysql-test/suite/ndb/r/ndb_fk_bugs.result 2012-09-20 08:36:30 +0000
+++ b/mysql-test/suite/ndb/r/ndb_fk_bugs.result 2012-09-22 10:10:42 +0000
@@ -90,3 +90,36 @@ Warning 1296 Got error 21026 'Create for
Error 1005 Can't create table 'test.languages' (errno: 150)
CREATE TABLE languages (id INT NOT NULL PRIMARY KEY) engine=ndb;
drop table languages, towns, counties;
+"# test: child vs parent column types"
+create table t1 (
+a int not null,
+b int not null,
+primary key using hash (a),
+unique key using hash (b)
+) engine ndb;
+create table t2 (
+a int not null,
+b char(20) not null,
+primary key using hash (a),
+key (b),
+constraint fk1 foreign key (b) references t1 (b)
+) engine ndb;
+ERROR HY000: Can't create table 'test.t2' (errno: 150)
+show warnings;
+Level Code Message
+Warning 1215 Parent column t1.b is incompatible with child column t2.b in NDB
+Error 1005 Can't create table 'test.t2' (errno: 150)
+create table t2 (
+a int not null,
+b char(10) not null,
+primary key using hash (a),
+key (b)
+) engine ndb;
+alter online table t2
+add constraint fk1 foreign key (b) references t1 (b);
+ERROR HY000: Cannot add foreign key constraint
+show warnings;
+Level Code Message
+Warning 1215 Parent column t1.b is incompatible with child column t2.b in NDB
+Error 150 Cannot add foreign key constraint
+drop table t2, t1;
=== modified file 'mysql-test/suite/ndb/t/ndb_fk_bugs.test'
--- a/mysql-test/suite/ndb/t/ndb_fk_bugs.test 2012-09-20 08:36:30 +0000
+++ b/mysql-test/suite/ndb/t/ndb_fk_bugs.test 2012-09-22 10:10:42 +0000
@@ -110,3 +110,36 @@ show warnings;
CREATE TABLE languages (id INT NOT NULL PRIMARY KEY) engine=ndb;
drop table languages, towns, counties;
+
+--echo "# test: child vs parent column types"
+
+create table t1 (
+ a int not null,
+ b int not null,
+ primary key using hash (a),
+ unique key using hash (b)
+) engine ndb;
+
+--error ER_CANT_CREATE_TABLE
+create table t2 (
+ a int not null,
+ b char(20) not null,
+ primary key using hash (a),
+ key (b),
+ constraint fk1 foreign key (b) references t1 (b)
+) engine ndb;
+show warnings;
+
+create table t2 (
+ a int not null,
+ b char(10) not null,
+ primary key using hash (a),
+ key (b)
+) engine ndb;
+
+--error 150
+alter online table t2
+ add constraint fk1 foreign key (b) references t1 (b);
+show warnings;
+
+drop table t2, t1;
=== modified file 'sql/ha_ndb_ddl_fk.cc'
--- a/sql/ha_ndb_ddl_fk.cc 2012-09-18 13:15:29 +0000
+++ b/sql/ha_ndb_ddl_fk.cc 2012-09-22 10:10:42 +0000
@@ -361,6 +361,27 @@ ha_ndbcluster::create_fks(THD *thd, Ndb
DBUG_RETURN(err_default);
}
+ {
+ /**
+ * Check that columns match...this happens to be same
+ * condition as the one for SPJ...
+ */
+ for (unsigned i = 0; parentcols[i] != 0; i++)
+ {
+ if (parentcols[i]->isBindable(* childcols[i]) == -1)
+ {
+ push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_CANNOT_ADD_FOREIGN,
+ "Parent column %s.%s is incompatible with child column %s.%s in NDB",
+ parent_tab.get_table()->getName(),
+ parentcols[i]->getName(),
+ child_tab.get_table()->getName(),
+ childcols[i]->getName());
+ DBUG_RETURN(err_default);
+ }
+ }
+ }
+
NdbDictionary::ForeignKey ndbfk;
if (!isnull(fk->name))
{
No bundle (reason: useless for push emails).
| Thread |
|---|
| • bzr push into mysql-5.5-cluster-7.3-fk branch (pekka.nousiainen:3918 to3919) WL#6244 | Pekka Nousiainen | 23 Sep |