# Not supported in embedded --source include/not_embedded.inc # This test case needs InnoDB. -- source include/have_innodb.inc --disable_query_log call mtr.add_suppression("InnoDB: Failed to find tablespace for table .* in the cache. Attempting to load the tablespace with space id"); call mtr.add_suppression("InnoDB: Allocated tablespace ID \\d+ for test.t[12], old maximum was"); call mtr.add_suppression("InnoDB: Allocated tablespace ID \\d+ for mysql.transaction_registry, old maximum was"); --enable_query_log create table t1(f1 int not null, f2 int not null, index idx(f2))engine=innodb; create table t2(f1 int primary key, f2 int, index idx(f2))engine=innodb; insert into t1 values(1, 2); insert into t2 values(1, 2); SET GLOBAL innodb_fast_shutdown = 0; --echo # Restart the server with innodb_force_recovery as 4. --let $restart_parameters= --innodb-force-recovery=4 --source include/restart_mysqld.inc let $status=`SHOW ENGINE INNODB STATUS`; select * from t1; --error ER_READ_ONLY_MODE insert into t1 values(2, 3); --error ER_CANT_CREATE_TABLE alter table t1 add f3 int not null, algorithm=copy; --error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON alter table t1 add f3 int not null, algorithm=inplace; --error ER_CANT_CREATE_TABLE drop index idx on t1; --error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON alter table t1 drop index idx, algorithm=inplace; --error ER_READ_ONLY_MODE update t1 set f1=3 where f2=2; --error ER_CANT_CREATE_TABLE create table t3(f1 int not null)engine=innodb; --error ER_BAD_TABLE_ERROR drop table t3; --error ER_ERROR_ON_RENAME rename table t1 to t3; --error ER_OPEN_AS_READONLY truncate table t1; --error ER_OPEN_AS_READONLY drop table t1; show tables; --echo # Restart the server with innodb_force_recovery as 5. --let $restart_parameters= --innodb-force-recovery=5 --source include/restart_mysqld.inc let $status=`SHOW ENGINE INNODB STATUS`; select * from t2; --error ER_READ_ONLY_MODE insert into t2 values(2, 3); --error ER_CANT_CREATE_TABLE alter table t2 add f3 int not null, algorithm=copy; --error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON alter table t2 add f3 int not null, algorithm=inplace; --error ER_CANT_CREATE_TABLE drop index idx on t2; --error ER_READ_ONLY_MODE update t2 set f1=3 where f2=2; --error ER_CANT_CREATE_TABLE create table t3(f1 int not null)engine=innodb; --error ER_BAD_TABLE_ERROR drop table t3; --error ER_ERROR_ON_RENAME rename table t2 to t3; --error ER_OPEN_AS_READONLY truncate table t2; --error ER_OPEN_AS_READONLY drop table t2; create schema db; drop schema db; show tables; --echo # Restart the server with innodb_force_recovery as 6. --let $restart_parameters= --innodb-force-recovery=6 --source include/restart_mysqld.inc let $status=`SHOW ENGINE INNODB STATUS`; select * from t2; --error ER_OPEN_AS_READONLY insert into t2 values(2, 3); --error ER_OPEN_AS_READONLY alter table t2 add f3 int not null, algorithm=copy; --error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON alter table t2 add f3 int not null, algorithm=inplace; --error ER_OPEN_AS_READONLY drop index idx on t2; --error ER_OPEN_AS_READONLY update t2 set f1=3 where f2=2; --error ER_CANT_CREATE_TABLE create table t3(f1 int not null)engine=innodb; --error ER_OPEN_AS_READONLY drop table t1; --error ER_ERROR_ON_RENAME rename table t2 to t3; --error ER_OPEN_AS_READONLY truncate table t2; --error ER_OPEN_AS_READONLY drop table t2; show tables; --echo # Restart the server with innodb_force_recovery=2 --let $restart_parameters= --innodb-force-recovery=2 --source include/restart_mysqld.inc let $status=`SHOW ENGINE INNODB STATUS`; select * from t2; begin; update t2 set f2=3; connect (con1,localhost,root,,); --echo # Force a redo log flush of the above uncommitted UPDATE SET GLOBAL innodb_flush_log_at_trx_commit=1; drop table t1; disconnect con1; connection default; --source include/kill_mysqld.inc --echo # Restart the server with innodb_force_recovery=3 --let $restart_parameters= --innodb-force-recovery=3 --source include/start_mysqld.inc let $status=`SHOW ENGINE INNODB STATUS`; SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; select * from t2; SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; select * from t2; SET SESSION innodb_lock_wait_timeout=1; --error ER_LOCK_WAIT_TIMEOUT insert into t2 values(1,2); insert into t2 values(9,10); --let $restart_parameters= --source include/restart_mysqld.inc select * from t2; drop table t2; show tables;