From 5db56a106b406d63e5fc41db47f98d227bb173eb Mon Sep 17 00:00:00 2001 From: "guilhem@mysql.com" <> Date: Fri, 20 Aug 2004 16:35:23 +0200 Subject: Making FLUSH TABLES WITH READ LOCK block COMMITs of existing transactions, in a deadlock-free manner. This splits locking the global read lock in two steps. This fixes a consequence of this bug, known as: BUG#4953 'mysqldump --master-data may report incorrect binlog position if using InnoDB' And a test. --- sql/sql_db.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'sql/sql_db.cc') diff --git a/sql/sql_db.cc b/sql/sql_db.cc index 2ee725e7432..3d877403813 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -42,7 +42,7 @@ int mysql_create_db(THD *thd, char *db, uint create_options, bool silent) VOID(pthread_mutex_lock(&LOCK_mysql_create_db)); // do not create database if another thread is holding read lock - if (wait_if_global_read_lock(thd,0)) + if (wait_if_global_read_lock(thd, 0, 1)) { error= -1; goto exit2; @@ -146,7 +146,7 @@ int mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent) VOID(pthread_mutex_lock(&LOCK_mysql_create_db)); // do not drop database if another thread is holding read lock - if (wait_if_global_read_lock(thd,0)) + if (wait_if_global_read_lock(thd, 0, 1)) { error= -1; goto exit2; -- cgit v1.2.1