diff options
author | unknown <heikki@hundin.mysql.fi> | 2002-09-13 13:55:25 +0300 |
---|---|---|
committer | unknown <heikki@hundin.mysql.fi> | 2002-09-13 13:55:25 +0300 |
commit | 34e62d6f5e32cfc9f755b396a1a38e3ca8c21b78 (patch) | |
tree | 635943aa78400cb9724dd14cde688396f9620989 /innobase | |
parent | ed7b69ac61ee5a6ca51d7ffb3cf2447d1bc8cf60 (diff) | |
download | mariadb-git-34e62d6f5e32cfc9f755b396a1a38e3ca8c21b78.tar.gz |
row0mysql.c:
Allow CREATE TABLE and DROP TABLE even if innodb_force_recovery is used, the user can drop a problematic table
innobase/row/row0mysql.c:
Allow CREATE TABLE and DROP TABLE even if innodb_force_recovery is used, the user can drop a problematic table
Diffstat (limited to 'innobase')
-rw-r--r-- | innobase/row/row0mysql.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/innobase/row/row0mysql.c b/innobase/row/row0mysql.c index d7b685c7f9d..d0175e8723a 100644 --- a/innobase/row/row0mysql.c +++ b/innobase/row/row0mysql.c @@ -1186,7 +1186,12 @@ row_create_table_for_mysql( ut_ad(trx->mysql_thread_id == os_thread_get_curr_id()); ut_ad(mutex_own(&(dict_sys->mutex))); - if (srv_created_new_raw || srv_force_recovery) { + /* We create table also if innodb_force_recovery is used. This + enables the user to stop a runaway rollback or a crash caused by + a temporary table #sql... He can use the trick explained in the + manual to rename the temporary table, and the drop it. */ + + if (srv_created_new_raw) { fprintf(stderr, "InnoDB: A new raw disk partition was initialized or\n" "InnoDB: innodb_force_recovery is on: we do not allow\n" @@ -1705,7 +1710,13 @@ row_drop_table_for_mysql( ut_ad(trx->mysql_thread_id == os_thread_get_curr_id()); ut_a(name != NULL); - if (srv_created_new_raw || srv_force_recovery) { + /* Note that we allow dropping of a table even if innodb_force_recovery + is used. If a rollback or purge would crash because of a corrupt + table, the user can try dropping it to avoid the crash. This is also + a nice way to stop a runaway rollback caused by a failing big + table import in a single transaction. */ + + if (srv_created_new_raw) { fprintf(stderr, "InnoDB: A new raw disk partition was initialized or\n" "InnoDB: innodb_force_recovery is on: we do not allow\n" |