summaryrefslogtreecommitdiff
path: root/sql/ha_innodb.cc
diff options
context:
space:
mode:
authorunknown <marko@hundin.mysql.fi>2004-04-02 16:25:48 +0300
committerunknown <marko@hundin.mysql.fi>2004-04-02 16:25:48 +0300
commitfac3642cc850d86dd927dec456aea19bae706918 (patch)
tree751da20f73c4984ede631acbed2ecfa9bcfe50f6 /sql/ha_innodb.cc
parentca68cb6625029607663412584aa361fe563fd9a5 (diff)
downloadmariadb-git-fac3642cc850d86dd927dec456aea19bae706918.tar.gz
InnoDB: ignore intra-database foreign key references between tables
when dropping database (Bug #3058) innobase/dict/dict0crea.c: Add a parameter to row_drop_table_for_mysql() innobase/dict/dict0dict.c: Make dict_tables_have_same_db() a global function innobase/include/dict0dict.h: Make dict_tables_have_same_db() a global function innobase/include/row0mysql.h: Add a parameter to row_drop_table_for_mysql() innobase/row/row0mysql.c: Add a parameter "drop_db" to row_drop_table_for_mysql() to skip foreign constraint checks on tables in same database innobase/trx/trx0roll.c: Add a parameter to row_drop_table_for_mysql() sql/ha_innodb.cc: Add a parameter "drop_db" to row_drop_table_for_mysql() innobase_drop_database(): allocate namebuf dynamically
Diffstat (limited to 'sql/ha_innodb.cc')
-rw-r--r--sql/ha_innodb.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc
index b0de417eb2f..5a929237e3b 100644
--- a/sql/ha_innodb.cc
+++ b/sql/ha_innodb.cc
@@ -3631,7 +3631,8 @@ ha_innobase::delete_table(
/* Drop the table in InnoDB */
- error = row_drop_table_for_mysql(norm_name, trx);
+ error = row_drop_table_for_mysql(norm_name, trx,
+ thd->lex.sql_command == SQLCOM_DROP_DB);
/* Flush the log to reduce probability that the .frm files and
the InnoDB data dictionary get out-of-sync if the user runs
@@ -3670,7 +3671,7 @@ innobase_drop_database(
trx_t* trx;
char* ptr;
int error;
- char namebuf[10000];
+ char* namebuf;
/* Get the transaction associated with the current thd, or create one
if not yet created */
@@ -3690,6 +3691,7 @@ innobase_drop_database(
}
ptr++;
+ namebuf = my_malloc(len + 2, MYF(0));
memcpy(namebuf, ptr, len);
namebuf[len] = '/';
@@ -3706,6 +3708,7 @@ innobase_drop_database(
}
error = row_drop_database_for_mysql(namebuf, trx);
+ my_free(namebuf, MYF(0));
/* Flush the log to reduce probability that the .frm files and
the InnoDB data dictionary get out-of-sync if the user runs