List:Commits« Previous MessageNext Message »
From:He Zhenxing Date:August 27 2008 11:05am
Subject:Re: bzr commit into mysql-5.1 branch (aelkin:2719) Bug#38798
View as plain text  
Hi, Andrei

I think your patch is good and OK to push!

Just one comment, I think maybe it's better to put the test case in
suite/bugs and name it something like rpl_bug38798.test. But I am OK if
you don't agree with me on this.


Andrei Elkin wrote:
> #At file:///home/andrei/MySQL/BZR/FIXES/5.1-bug38798-assert_binlog_open/
> 
>  2719 Andrei Elkin	2008-08-26
>       Bug #38798 Assertion mysql_bin_log.is_open() failed in
> binlog_trans_log_savepos()
>       
>       The assert is about binlogging must have been activated, but it was not
> actually according
>       to the reported how-to-repeat instuctions.
>       Analysis revealed that binlog_start_trans_and_stmt() was called without prior
> testing 
>       if binlogging is ON.
>       
>       Fixed with avoing entering binlog_start_trans_and_stmt() if binlog is not
> activated.
> added:
>   mysql-test/r/binlog_off.result
>   mysql-test/t/binlog_off-master.opt
>   mysql-test/t/binlog_off.test
> modified:
>   sql/sql_insert.cc
> 
> per-file messages:
>   mysql-test/r/binlog_off.result
>     new results file
>   mysql-test/t/binlog_off-master.opt
>     the option to deactivate binlogging
>   mysql-test/t/binlog_off.test
>     regression test for the bug
>   sql/sql_insert.cc
>     avoing entering binlog_start_trans_and_stmt() if binlog is not activated.
> === added file 'mysql-test/r/binlog_off.result'
> --- a/mysql-test/r/binlog_off.result	1970-01-01 00:00:00 +0000
> +++ b/mysql-test/r/binlog_off.result	2008-08-26 17:01:49 +0000
> @@ -0,0 +1,6 @@
> +DROP TABLE IF EXISTS t1, t2;
> +set @@session.binlog_format=row;
> +create table t1 (a int);
> +insert into t1 values (1);
> +create table t2 select * from t1;
> +drop table t1, t2;
> 
> === added file 'mysql-test/t/binlog_off-master.opt'
> --- a/mysql-test/t/binlog_off-master.opt	1970-01-01 00:00:00 +0000
> +++ b/mysql-test/t/binlog_off-master.opt	2008-08-26 17:01:49 +0000
> @@ -0,0 +1 @@
> +--loose-skip-log-bin
> 
> === added file 'mysql-test/t/binlog_off.test'
> --- a/mysql-test/t/binlog_off.test	1970-01-01 00:00:00 +0000
> +++ b/mysql-test/t/binlog_off.test	2008-08-26 17:01:49 +0000
> @@ -0,0 +1,22 @@
> +#
> +# binlog_off.test purpose is check that algorithms dealing with binlogging
> +# are robbust to sustain --skip-log-bin
> +#
> +
> +--disable_warnings
> +DROP TABLE IF EXISTS t1, t2;
> +--enable_warnings
> +
> +#
> +# Bug #38798 Assertion mysql_bin_log.is_open() failed in 
> +#            binlog_trans_log_savepos()
> +# testing that there is no crash
> +
> +set @@session.binlog_format=row;
> +
> +create table t1 (a int);
> +insert into t1 values (1);
> +create table t2 select * from t1;
> +
> +# clean-up
> +drop table t1, t2;
> 
> === modified file 'sql/sql_insert.cc'
> --- a/sql/sql_insert.cc	2008-07-11 18:51:10 +0000
> +++ b/sql/sql_insert.cc	2008-08-26 17:01:49 +0000
> @@ -3523,7 +3523,8 @@ select_create::prepare(List<Item> &value
>      temporary table, we need to start a statement transaction.
>    */
>    if ((thd->lex->create_info.options & HA_LEX_CREATE_TMP_TABLE) == 0
> &&
> -      thd->current_stmt_binlog_row_based)
> +      thd->current_stmt_binlog_row_based &&
> +      (thd->options & OPTION_BIN_LOG) && mysql_bin_log.is_open())
>    {
>      thd->binlog_start_trans_and_stmt();
>    }
> @@ -3619,10 +3620,11 @@ select_create::binlog_show_create_table(
>    result= store_create_info(thd, &tmp_table_list, &query, create_info);
>    DBUG_ASSERT(result == 0); /* store_create_info() always return 0 */
>  
> -  thd->binlog_query(THD::STMT_QUERY_TYPE,
> -                    query.ptr(), query.length(),
> -                    /* is_trans */ TRUE,
> -                    /* suppress_use */ FALSE);
> +  if ((thd->options & OPTION_BIN_LOG) && mysql_bin_log.is_open())
> +    thd->binlog_query(THD::STMT_QUERY_TYPE,
> +                      query.ptr(), query.length(),
> +                      /* is_trans */ TRUE,
> +                      /* suppress_use */ FALSE);
>  }
>  
>  void select_create::store_values(List<Item> &values)
> 


Thread
bzr commit into mysql-5.1 branch (aelkin:2719) Bug#38798Andrei Elkin26 Aug
  • Re: bzr commit into mysql-5.1 branch (aelkin:2719) Bug#38798He Zhenxing27 Aug
    • Re: bzr commit into mysql-5.1 branch (aelkin:2719) Bug#38798Andrei Elkin27 Aug
      • Re: bzr commit into mysql-5.1 branch (aelkin:2719) Bug#38798He Zhenxing27 Aug
        • Re: bzr commit into mysql-5.1 branch (aelkin:2719) Bug#38798Andrei Elkin27 Aug
  • Re: bzr commit into mysql-5.1 branch (aelkin:2719) Bug#38798Sven Sandberg29 Aug