diff options
Diffstat (limited to 'mysql-test/suite/handler/handler.inc')
-rw-r--r-- | mysql-test/suite/handler/handler.inc | 161 |
1 files changed, 1 insertions, 160 deletions
diff --git a/mysql-test/suite/handler/handler.inc b/mysql-test/suite/handler/handler.inc index c29ee0c693d..f4c677adc90 100644 --- a/mysql-test/suite/handler/handler.inc +++ b/mysql-test/suite/handler/handler.inc @@ -890,166 +890,7 @@ connection default; --error ER_NO_SUCH_TABLE reap; handler t1 close; - ---echo # ---echo # ROLLBACK TO SAVEPOINT releases transactional locks, ---echo # but has no effect on open HANDLERs ---echo # -create table t2 like t1; -create table t3 like t1; -begin; ---echo # Have something before the savepoint -select * from t3; -savepoint sv; -handler t1 open; -handler t1 read a first; -handler t1 read a next; -select * from t2; -connection con1; ---echo # Sending: ---send drop table t1 -connection con2; ---echo # Sending: ---send drop table t2 -connection default; ---echo # Let DROP TABLE statements sync in. We must use ---echo # a separate connection for that, because otherwise SELECT ---echo # will auto-close the HANDLERs, becaues there are pending ---echo # exclusive locks against them. -connection con3; ---echo # Waiting for 'drop table t1' to get blocked... -let $wait_condition=select count(*)=1 from information_schema.processlist - where state='Waiting for table metadata lock' and - info='drop table t1'; ---source include/wait_condition.inc ---echo # Waiting for 'drop table t2' to get blocked... -let $wait_condition=select count(*)=1 from information_schema.processlist - where state='Waiting for table metadata lock' and - info='drop table t2'; ---source include/wait_condition.inc ---echo # Demonstrate that t2 lock was released and t2 was dropped ---echo # after ROLLBACK TO SAVEPOINT -connection default; -rollback to savepoint sv; -connection con2; ---echo # Reaping 'drop table t2'... ---reap ---echo # Demonstrate that ROLLBACK TO SAVEPOINT didn't release the handler ---echo # lock. -connection default; -handler t1 read a next; -handler t1 read a next; ---echo # Demonstrate that the drop will go through as soon as we close the ---echo # HANDLER -handler t1 close; -connection con1; ---echo # Reaping 'drop table t1'... ---reap -connection default; -commit; -drop table t3; ---echo # ---echo # A few special cases when using SAVEPOINT/ROLLBACK TO ---echo # SAVEPOINT and HANDLER. ---echo # ---echo # Show that rollback to the savepoint taken in the beginning ---echo # of the transaction doesn't release mdl lock on ---echo # the HANDLER that was opened later. ---echo # -create table t1 (a int, key using btree (a)); -insert into t1 (a) values (1), (2), (3), (4), (5); -create table t2 like t1; -begin; -savepoint sv; -handler t1 open; -handler t1 read a first; -handler t1 read a next; -select * from t2; -connection con1; ---echo # Sending: ---send drop table t1 -connection con2; ---echo # Sending: ---send drop table t2 -connection default; ---echo # Let DROP TABLE statements sync in. We must use ---echo # a separate connection for that, because otherwise SELECT ---echo # will auto-close the HANDLERs, becaues there are pending ---echo # exclusive locks against them. -connection con3; ---echo # Waiting for 'drop table t1' to get blocked... -let $wait_condition=select count(*)=1 from information_schema.processlist - where state='Waiting for table metadata lock' and - info='drop table t1'; ---source include/wait_condition.inc ---echo # Waiting for 'drop table t2' to get blocked... -let $wait_condition=select count(*)=1 from information_schema.processlist - where state='Waiting for table metadata lock' and - info='drop table t2'; ---source include/wait_condition.inc ---echo # Demonstrate that t2 lock was released and t2 was dropped ---echo # after ROLLBACK TO SAVEPOINT -connection default; -rollback to savepoint sv; -connection con2; ---echo # Reaping 'drop table t2'... ---reap ---echo # Demonstrate that ROLLBACK TO SAVEPOINT didn't release the handler ---echo # lock. -connection default; -handler t1 read a next; -handler t1 read a next; ---echo # Demonstrate that the drop will go through as soon as we close the ---echo # HANDLER -handler t1 close; -connection con1; ---echo # Reaping 'drop table t1'... ---reap -connection default; -commit; ---echo # ---echo # Show that rollback to the savepoint taken in the beginning ---echo # of the transaction works properly (no valgrind warnins, etc), ---echo # even though it's done after the HANDLER mdl lock that was there ---echo # at the beginning is released and added again. ---echo # -create table t1 (a int, key using btree (a)); -insert into t1 (a) values (1), (2), (3), (4), (5); -create table t2 like t1; -create table t3 like t1; -insert into t3 (a) select a from t1; -begin; -handler t1 open; -savepoint sv; -handler t1 read a first; -select * from t2; -handler t1 close; -handler t3 open; -handler t3 read a first; -rollback to savepoint sv; -connection con1; -drop table t1, t2; ---echo # Sending: ---send drop table t3 ---echo # Let DROP TABLE statement sync in. -connection con2; ---echo # Waiting for 'drop table t3' to get blocked... -let $wait_condition=select count(*)=1 from information_schema.processlist - where state='Waiting for table metadata lock' and - info='drop table t3'; ---source include/wait_condition.inc ---echo # Demonstrate that ROLLBACK TO SAVEPOINT didn't release the handler ---echo # lock. -connection default; -handler t3 read a next; ---echo # Demonstrate that the drop will go through as soon as we close the ---echo # HANDLER -handler t3 close; -connection con1; ---echo # Reaping 'drop table t3'... ---reap -connection default; -commit; +drop table t1; --echo # --echo # If we have to wait on an exclusive locks while having |