diff options
author | unknown <osku@127.(none)> | 2005-09-06 14:38:21 +0300 |
---|---|---|
committer | unknown <osku@127.(none)> | 2005-09-06 14:38:21 +0300 |
commit | 2d1c26cc61f83a6d3522fa677c8e7d6d0a89732c (patch) | |
tree | 55410fefb1c963b614b51967171775a6bdaab72b /innobase/row | |
parent | 7b2aacb73d43b8d6fa62167610c0cd1e734ffed9 (diff) | |
download | mariadb-git-2d1c26cc61f83a6d3522fa677c8e7d6d0a89732c.tar.gz |
InnoDB: Reject foreign keys in temporary tables. Closes bug #12084.
innobase/dict/dict0dict.c:
Add reject_fks parameter to dict_create_foreign_constraints_low and
dict_create_foreign_constraints.
innobase/include/dict0dict.h:
Add reject_fks parameter to dict_create_foreign_constraints.
innobase/include/row0mysql.h:
Add reject_fks parameter to row_table_add_foreign_constraints.
innobase/row/row0mysql.c:
Add reject_fks parameter to row_table_add_foreign_constraints.
sql/ha_innodb.cc:
In create, pass correct reject_fks argument to
row_table_add_foreign_constraints depending on whether we're creating a
temporary table or not. Also move duplicated cleanup code to a single
place.
Diffstat (limited to 'innobase/row')
-rw-r--r-- | innobase/row/row0mysql.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/innobase/row/row0mysql.c b/innobase/row/row0mysql.c index 29239210183..26aae117d1d 100644 --- a/innobase/row/row0mysql.c +++ b/innobase/row/row0mysql.c @@ -2088,9 +2088,12 @@ row_table_add_foreign_constraints( FOREIGN KEY (a, b) REFERENCES table2(c, d), table2 can be written also with the database name before it: test.table2 */ - const char* name) /* in: table full name in the + const char* name, /* in: table full name in the normalized form database_name/table_name */ + ibool reject_fks) /* in: if TRUE, fail with error + code DB_CANNOT_ADD_CONSTRAINT if + any foreign keys are found. */ { ulint err; @@ -2111,7 +2114,8 @@ row_table_add_foreign_constraints( trx->dict_operation = TRUE; - err = dict_create_foreign_constraints(trx, sql_string, name); + err = dict_create_foreign_constraints(trx, sql_string, name, + reject_fks); if (err == DB_SUCCESS) { /* Check that also referencing constraints are ok */ |