summaryrefslogtreecommitdiff
path: root/innobase
diff options
context:
space:
mode:
authorunknown <heikki@hundin.mysql.fi>2002-09-13 13:55:25 +0300
committerunknown <heikki@hundin.mysql.fi>2002-09-13 13:55:25 +0300
commit34e62d6f5e32cfc9f755b396a1a38e3ca8c21b78 (patch)
tree635943aa78400cb9724dd14cde688396f9620989 /innobase
parented7b69ac61ee5a6ca51d7ffb3cf2447d1bc8cf60 (diff)
downloadmariadb-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.c15
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"