From: Date: December 11 2008 2:30pm Subject: bzr commit into mysql-5.1-bugteam branch (luis.soares:2734) Bug#38826 List-Archive: http://lists.mysql.com/commits/61355 X-Bug: 38826 Message-Id: <200812111330.mBBDU0Am023870@localhost.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit #At file:///stuff/workspace/mysql-server/bugfix/5.1-bugteam-fix-topush/ 2734 Luis Soares 2008-12-11 [merge] BUG#38826 Merge from 5.0-bugteam. Additional fix for unused ret variable warning. removed: mysql-test/suite/rpl/r/rpl_crash_before_purge_logs.result mysql-test/suite/rpl/t/rpl_crash_before_purge_logs.test modified: sql/log.cc === removed file 'mysql-test/suite/rpl/r/rpl_crash_before_purge_logs.result' --- a/mysql-test/suite/rpl/r/rpl_crash_before_purge_logs.result 2008-12-04 14:07:56 +0000 +++ b/mysql-test/suite/rpl/r/rpl_crash_before_purge_logs.result 1970-01-01 00:00:00 +0000 @@ -1,14 +0,0 @@ -stop slave; -drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; -reset master; -reset slave; -drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; -start slave; -stop slave; -DROP TABLE IF EXISTS t1; -CREATE TABLE t1 (id INT); -start slave; -SET GLOBAL debug= "+d,crash_before_purge_logs"; -FLUSH LOGS; -ERROR HY000: Lost connection to MySQL server during query -start slave; === removed file 'mysql-test/suite/rpl/t/rpl_crash_before_purge_logs.test' --- a/mysql-test/suite/rpl/t/rpl_crash_before_purge_logs.test 2008-12-04 14:07:56 +0000 +++ b/mysql-test/suite/rpl/t/rpl_crash_before_purge_logs.test 1970-01-01 00:00:00 +0000 @@ -1,57 +0,0 @@ ---source include/master-slave.inc ---source include/have_debug.inc ---disable_reconnect - -# We have to sync with master, to ensure slave had time to start properly -# # before we stop it. If not, we get errors about UNIX_TIMESTAMP() in the -# log. -sync_slave_with_master; -stop slave; ---source include/wait_for_slave_to_stop.inc - -# ON MASTER - -connection master; - ---disable_warnings -DROP TABLE IF EXISTS t1; ---enable_warnings - -CREATE TABLE t1 (id INT); - -let $1=100; -disable_query_log; -begin; -while ($1) -{ - eval INSERT INTO t1 VALUES( $1 ); - dec $1; -} -DROP TABLE t1; -save_master_pos; - -enable_query_log; - -## ON SLAVE - -connection slave; -start slave; ---source include/wait_for_slave_to_start.inc -sync_with_master 0; -connection master; -save_master_pos; -connection slave; - ---exec echo "restart" > $MYSQLTEST_VARDIR/tmp/slave0.expect -SET GLOBAL debug= "+d,crash_before_purge_logs"; - ---error 2013 -# try to rotate logs -FLUSH LOGS; - ---enable_reconnect ---source include/wait_until_connected_again.inc -start slave; ---source include/wait_for_slave_to_start.inc - -sync_with_master 0; === modified file 'sql/log.cc' --- a/sql/log.cc 2008-12-10 10:51:43 +0000 +++ b/sql/log.cc 2008-12-11 13:29:09 +0000 @@ -2978,7 +2978,7 @@ int MYSQL_BIN_LOG::purge_first_log(Relay * Need to update the log pos because purge logs has been called * after fetching initially the log pos at the begining of the method. */ - if(error=find_log_pos(&rli->linfo, rli->event_relay_log_name, 0)) + if((error=find_log_pos(&rli->linfo, rli->event_relay_log_name, 0))) { char buff[22]; sql_print_error("next log error: %d offset: %s log: %s included: %d", @@ -3044,7 +3044,6 @@ int MYSQL_BIN_LOG::purge_logs(const char ulonglong *decrease_log_space) { int error; - int ret = 0; bool exit_loop= 0; LOG_INFO log_info; THD *thd= current_thd; @@ -3067,8 +3066,8 @@ int MYSQL_BIN_LOG::purge_logs(const char */ if (!my_b_inited(&purge_temp)) { - if (error=open_cached_file(&purge_temp, mysql_tmpdir, TEMP_PREFIX, - DISK_BUFFER_SIZE, MYF(MY_WME))) + if ((error=open_cached_file(&purge_temp, mysql_tmpdir, TEMP_PREFIX, + DISK_BUFFER_SIZE, MYF(MY_WME)))) { sql_print_error("MYSQL_LOG::purge_logs failed to open purge_temp"); goto err; @@ -3076,7 +3075,7 @@ int MYSQL_BIN_LOG::purge_logs(const char } else { - if (error=reinit_io_cache(&purge_temp, WRITE_CACHE, 0, 0, 1)) + if ((error=reinit_io_cache(&purge_temp, WRITE_CACHE, 0, 0, 1))) { sql_print_error("MYSQL_LOG::purge_logs failed to reinit purge_temp " "for write"); @@ -3107,7 +3106,7 @@ int MYSQL_BIN_LOG::purge_logs(const char } /* We know how many files to delete. Update index file. */ - if (error=update_log_index(&log_info, need_update_threads)) + if ((error=update_log_index(&log_info, need_update_threads))) { sql_print_error("MSYQL_LOG::purge_logs failed to update the index file"); goto err; @@ -3116,7 +3115,7 @@ int MYSQL_BIN_LOG::purge_logs(const char DBUG_EXECUTE_IF("crash_after_update_index", abort();); /* Switch purge_temp for read. */ - if (error=reinit_io_cache(&purge_temp, READ_CACHE, 0, 0, 0)) + if ((error=reinit_io_cache(&purge_temp, READ_CACHE, 0, 0, 0))) { sql_print_error("MSYQL_LOG::purge_logs failed to reinit purge_temp " "for read"); @@ -3251,6 +3250,7 @@ int MYSQL_BIN_LOG::purge_logs(const char } err: + close_cached_file(&purge_temp); if (need_mutex) pthread_mutex_unlock(&LOCK_index); DBUG_RETURN(error);