Commit 69f571db authored by heikki@hundin.mysql.fi's avatar heikki@hundin.mysql.fi
Browse files

row0mysql.c:

  Allow CREATE TABLE and DROP TABLE even if innodb_force_recovery is used, the user can drop a problematic table
parent db8f4fd3
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -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"