#At file:///home/ja155679/devel/mysql/mysql-6.0-runtime/
2718 Jorgen Austvik 2009-02-04
bug#41755: add sync point and use it for testing locking of table names during ALTER TABLE RENAME
modified:
mysql-test/suite/ddl_lock/r/concurrent_ddl.result
mysql-test/suite/ddl_lock/t/concurrent_ddl.test
sql/sql_table.cc
=== modified file 'mysql-test/suite/ddl_lock/r/concurrent_ddl.result'
--- a/mysql-test/suite/ddl_lock/r/concurrent_ddl.result 2008-12-17 10:11:14 +0000
+++ b/mysql-test/suite/ddl_lock/r/concurrent_ddl.result 2009-02-04 09:11:18 +0000
@@ -311,14 +311,15 @@ DROP TABLE t4;
##
CREATE TABLE t1(a INT, b CHAR(100))
ENGINE=<engine_type>;
+INSERT INTO t1 (a, b) VALUES (1, 'one');
# Switch to connection locker
-SET DEBUG_SYNC= 'after_lock_tables_takes_lock
- SIGNAL locked WAIT_FOR do_unlock';
+SET DEBUG_SYNC= 'locked_table_name
+ SIGNAL locked WAIT_FOR do_unlock HIT_LIMIT 2';
# "send" next statement
ALTER TABLE t1 RENAME t2;
# Switch to connection waiter
SET DEBUG_SYNC= 'now WAIT_FOR locked';
-SET DEBUG_SYNC= 'after_start_ddl SIGNAL do_unlock';
+SET DEBUG_SYNC= 'mdl_enter_cond SIGNAL do_unlock';
# "send" next statement
ALTER TABLE t2 RENAME t3;
# Switch to connection locker
@@ -328,10 +329,10 @@ ALTER TABLE t2 RENAME t3;
# Switch to connection default
SELECT SUM(a) FROM t3;
SUM(a)
-NULL
+1
SELECT COUNT(*) FROM t3;
COUNT(*)
-0
+1
SET DEBUG_SYNC= 'RESET';
DROP TABLE t3;
##
=== modified file 'mysql-test/suite/ddl_lock/t/concurrent_ddl.test'
--- a/mysql-test/suite/ddl_lock/t/concurrent_ddl.test 2008-12-17 10:11:14 +0000
+++ b/mysql-test/suite/ddl_lock/t/concurrent_ddl.test 2009-02-04 09:11:18 +0000
@@ -384,10 +384,12 @@ eval
CREATE TABLE t1(a INT, b CHAR(100))
ENGINE=$engine_type;
+INSERT INTO t1 (a, b) VALUES (1, 'one');
+
--echo # Switch to connection locker
connection locker;
-SET DEBUG_SYNC= 'after_lock_tables_takes_lock
- SIGNAL locked WAIT_FOR do_unlock';
+SET DEBUG_SYNC= 'locked_table_name
+ SIGNAL locked WAIT_FOR do_unlock HIT_LIMIT 2';
--echo # "send" next statement
send
ALTER TABLE t1 RENAME t2;
@@ -395,7 +397,7 @@ ALTER TABLE t1 RENAME t2;
--echo # Switch to connection waiter
connection waiter;
SET DEBUG_SYNC= 'now WAIT_FOR locked';
-SET DEBUG_SYNC= 'after_start_ddl SIGNAL do_unlock';
+SET DEBUG_SYNC= 'mdl_enter_cond SIGNAL do_unlock';
--echo # "send" next statement
send
ALTER TABLE t2 RENAME t3;
=== modified file 'sql/sql_table.cc'
--- a/sql/sql_table.cc 2009-01-31 16:21:19 +0000
+++ b/sql/sql_table.cc 2009-02-04 09:11:18 +0000
@@ -3785,6 +3785,8 @@ static bool lock_table_name_if_not_cache
}
else
*lock_data= 0;
+ } else {
+ DEBUG_SYNC(thd, "locked_table_name");
}
return FALSE;
}
| Thread |
|---|
| • bzr commit into mysql-6.0-runtime branch (jorgen.austvik:2718) Bug#41755 | Jorgen Austvik | 4 Feb |