diff options
author | unknown <heikki@hundin.mysql.fi> | 2004-12-27 17:19:27 +0200 |
---|---|---|
committer | unknown <heikki@hundin.mysql.fi> | 2004-12-27 17:19:27 +0200 |
commit | 5f6d8e65262227a8e6431a57fe832fd335c6b2e4 (patch) | |
tree | 6280cd0f7c0198262f4b03a419500cfb451e9012 /innobase/row/row0mysql.c | |
parent | 47efc5f335d117cd0fbe3d1e633936ae70442933 (diff) | |
parent | a7b984d2336135100c09998d653f331d3b9df996 (diff) | |
download | mariadb-git-5f6d8e65262227a8e6431a57fe832fd335c6b2e4.tar.gz |
Merge hundin.mysql.fi:/home/heikki/mysql-4.0
into hundin.mysql.fi:/home/heikki/mysql-4.1
innobase/row/row0ins.c:
Auto merged
innobase/row/row0mysql.c:
Auto merged
Diffstat (limited to 'innobase/row/row0mysql.c')
-rw-r--r-- | innobase/row/row0mysql.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/innobase/row/row0mysql.c b/innobase/row/row0mysql.c index e887079e025..47f1f4c444c 100644 --- a/innobase/row/row0mysql.c +++ b/innobase/row/row0mysql.c @@ -1833,6 +1833,12 @@ row_drop_table_for_mysql_in_background( trx = trx_allocate_for_background(); + /* If the original transaction was dropping a table referenced by + foreign keys, we must set the following to be able to drop the + table: */ + + trx->check_foreigns = FALSE; + /* fputs("InnoDB: Error: Dropping table ", stderr); ut_print_name(stderr, name); fputs(" in background drop list\n", stderr); */ @@ -1906,16 +1912,16 @@ loop: goto already_dropped; } - - if (table->n_mysql_handles_opened > 0 - || table->n_foreign_key_checks_running > 0) { + + if (DB_SUCCESS != row_drop_table_for_mysql_in_background( + drop->table_name)) { + /* If the DROP fails for some table, we return, and let the + main thread retry later */ return(n_tables + n_tables_dropped); } n_tables_dropped++; - - row_drop_table_for_mysql_in_background(drop->table_name); already_dropped: mutex_enter(&kernel_mutex); |