From: Date: July 23 2008 5:43am Subject: bzr commit into mysql-6.0-backup branch (chad:2680) Bug#38303 List-Archive: http://lists.mysql.com/commits/50248 X-Bug: 38303 Message-Id: <20080723034330.7E5428305D@cornsilk.net> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit #At file:///home/cmiller/work/mysqlbzr/mysql-6.0--bug38303/ 2680 Chad MILLER 2008-07-22 Bug#38303: mysqldump: Needs LOCAL for FLUSH TABLES when --dump-slave is enabled Add additional case of dump-slave (opt_slave_data) to "LOCAL" condition for FLUSH TABLES. modified: .bzrignore client/mysqldump.c === modified file '.bzrignore' --- a/.bzrignore 2008-07-09 07:12:43 +0000 +++ b/.bzrignore 2008-07-23 03:43:20 +0000 @@ -1886,3 +1886,5 @@ ylwrap zlib/*.ds? zlib/*.vcproj libmysqld/ddl_blocker.cc +extra/libevent/event-config.h +libmysqld/mdl.cc === modified file 'client/mysqldump.c' --- a/client/mysqldump.c 2008-05-29 15:44:11 +0000 +++ b/client/mysqldump.c 2008-07-23 03:43:20 +0000 @@ -4518,12 +4518,19 @@ static int do_flush_tables_read_lock(MYS FLUSH TABLES is to lower the probability of a stage where both mysqldump and most client connections are stalled. Of course, if a second long update starts between the two FLUSHes, we have that bad stall. + + If either master-data or dump-slave is set, then we should not flush the + remote tables. Use the "LOCAL" qualifier to prevent it. */ + const char *statement; + + if ((opt_master_data != 0) || (opt_slave_data != 0)) + statement= "FLUSH /*!40101 LOCAL */ TABLES"; + else + statement= "FLUSH TABLES"; + return - ( mysql_query_with_error_report(mysql_con, 0, - ((opt_master_data != 0) ? - "FLUSH /*!40101 LOCAL */ TABLES" : - "FLUSH TABLES")) || + ( mysql_query_with_error_report(mysql_con, 0, statement) || mysql_query_with_error_report(mysql_con, 0, "FLUSH TABLES WITH READ LOCK") ); }