diff --git a/mysql-test/r/rpl_flush_tables.result b/mysql-test/r/rpl_flush_tables.result index ca2e77cac663cf31622bdbf3c6fd4cac0a94665e..667530c4071ea1e5d4132e5873b06a90a8c113e0 100644 --- a/mysql-test/r/rpl_flush_tables.result +++ b/mysql-test/r/rpl_flush_tables.result @@ -38,3 +38,9 @@ master-bin.000001 # Query 1 # use `test`; rename table t1 to t5, t2 to t1 master-bin.000001 # Query 1 # use `test`; flush tables select * from t3; a +stop slave; +drop table t1; +flush tables with read lock; +start slave; +stop slave; +ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction diff --git a/mysql-test/t/rpl_flush_tables.test b/mysql-test/t/rpl_flush_tables.test index 4411d6ea1c9085ab7288962fc3f9a4619cdb48b6..92aef9c85d00a175ec09caf78f1e4fc3921ee114 100644 --- a/mysql-test/t/rpl_flush_tables.test +++ b/mysql-test/t/rpl_flush_tables.test @@ -39,5 +39,15 @@ select * from t3; # Note that all this confusion may cause warnings 'table xx is open on rename' # in the .err files; these are not fatal and are not reported by mysql-test-run. +stop slave; +connection master; +drop table t1; +connection slave; +flush tables with read lock; +start slave; +sleep 1; +--error 1192 +stop slave; + # End of 4.1 tests # Adding comment for force manual merge 5.0 -> wl1012. Delete me if needed. diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 39aad216b401cdc53569381165fa2e2305f55c13..cc5b931493b1c17f39f0dc2fed5e358dfbd317f6 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -2944,7 +2944,7 @@ end_with_restore_list: To prevent that, refuse SLAVE STOP if the client thread has locked tables */ - if (thd->locked_tables || thd->active_transaction()) + if (thd->locked_tables || thd->active_transaction() || thd->global_read_lock) { my_message(ER_LOCK_OR_ACTIVE_TRANSACTION, ER(ER_LOCK_OR_ACTIVE_TRANSACTION), MYF(0));