diff options
author | unknown <marko@hundin.mysql.fi> | 2004-04-02 16:25:48 +0300 |
---|---|---|
committer | unknown <marko@hundin.mysql.fi> | 2004-04-02 16:25:48 +0300 |
commit | fac3642cc850d86dd927dec456aea19bae706918 (patch) | |
tree | 751da20f73c4984ede631acbed2ecfa9bcfe50f6 /sql/ha_innodb.cc | |
parent | ca68cb6625029607663412584aa361fe563fd9a5 (diff) | |
download | mariadb-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.cc | 7 |
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 |