summaryrefslogtreecommitdiff
path: root/mysql-test/suite/handler/heap.result
diff options
context:
space:
mode:
authorSergey Vojtovich <svoj@mariadb.org>2016-05-06 13:44:07 +0400
committerSergey Vojtovich <svoj@mariadb.org>2016-11-03 16:35:15 +0400
commitd665e79c5b8582f44dc280e5e6df4a8ff4945623 (patch)
tree58f1b236eb85db2182493a71bf91e1b5e8fe8067 /mysql-test/suite/handler/heap.result
parente2d6912609c976bad04cee76874d4f986cd58cef (diff)
downloadmariadb-git-d665e79c5b8582f44dc280e5e6df4a8ff4945623.tar.gz
MDEV-7660 - MySQL WL#6671 "Improve scalability by not using thr_lock.c locks
for InnoDB tables" Don't use thr_lock.c locks for InnoDB tables. Below is list of changes that were needed to implement this: - HANDLER OPEN acquireis MDL_SHARED_READ instead of MDL_SHARED - HANDLER READ calls external_lock() even if SE is not going to be locked by THR_LOCK - InnoDB lock wait timeouts are now honored which are much shorter by default than server lock wait timeouts (1 year vs 50 seconds) - with @@autocommit= 1 LOCK TABLES disables autocommit implicitely, though user still sees @@autocommt= 1 - the above starts implicit transaction - transactions started by LOCK TABLES are now rolled back on disconnect (previously everything was committed due to autocommit) - transactions started by LOCK TABLES are now rolled back by ROLLBACK (previously everything was committed due to autocommit) - it is now impossible to change BINLOG_FORMAT under LOCK TABLES (at least to statement) due to running transaction - LOCK TABLES WRITE is additionally handled by MDL - ...in contrast LOCK TABLES READ protection against DML is pure InnoDB - combining transactional and non-transactional tables under LOCK TABLES may cause rolled back changes in transactional table and "committed" changes in non-transactional table - user may disable innodb_table_locks, which will cause LOCK TABLES to be noop basically Removed tests for BUG#45143 and BUG#55930 which cover InnoDB + THR_LOCK. To operate properly these tests require code flow to go through THR_LOCK debug sync points, which is not the case after this patch. These tests are removed by WL#6671 as well. An alternative is to port them to different storage engine.
Diffstat (limited to 'mysql-test/suite/handler/heap.result')
-rw-r--r--mysql-test/suite/handler/heap.result27
1 files changed, 17 insertions, 10 deletions
diff --git a/mysql-test/suite/handler/heap.result b/mysql-test/suite/handler/heap.result
index 70dcefe4ff3..fc42e43f710 100644
--- a/mysql-test/suite/handler/heap.result
+++ b/mysql-test/suite/handler/heap.result
@@ -545,7 +545,6 @@ optimize table t1;
connection default;
handler t1 read next;
c1
-1
handler t1 close;
connection con2;
Table Op Msg_type Msg_text
@@ -1296,19 +1295,27 @@ commit;
# an open HANDLER, ER_LOCK_DEADLOCK is reported.
#
create table t1 (a int, key a(a));
-create table t2 like t1;
handler t1 open;
connection con1;
-lock table t1 write, t2 write;
+select get_lock('lock1', 10);
+get_lock('lock1', 10)
+1
connection default;
-drop table t2;
+select get_lock('lock1', 10);
connection con2;
-# Waiting for 'drop table t2' to get blocked...
+# Waiting for 'select get_lock('lock1', 10)' to get blocked...
connection con1;
drop table t1;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
-unlock tables;
+select release_lock('lock1');
+release_lock('lock1')
+1
connection default;
+get_lock('lock1', 10)
+1
+select release_lock('lock1');
+release_lock('lock1')
+1
# Demonstrate that there is no deadlock with FLUSH TABLE,
# even though it is waiting for the other table to go away
create table t2 like t1;
@@ -1347,6 +1354,10 @@ handler t1 read a next;
a
1
# Unblock 'lock tables t1 write'.
+select * from t1;
+a
+1
+2
commit;
connection con1;
# Reap 'lock tables t1 write'.
@@ -1516,10 +1527,6 @@ handler t1 read a last;
a b
7 7
commit;
-connection con1;
-# Demonstrate that the HANDLER doesn't hold MDL_SHARED_WRITE.
-lock table t1 write;
-unlock tables;
connection default;
handler t1 read a prev;
a b