Andrei Elkin wrote:
> He Zhenxing, hei-hei!
>
> thanks for the prompt review!
>
> > 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.
>
> I'd rather to keep this new binlog_off test in the main suite. To explain why,
> the current is not the first case of a failure in replication code
> when binlogging is OFF. So far we have not had a test checking if the
> replication/binlogging algorithems are properly shut off.
>
Sounds resonable, BTW, do you think binlog_is_off or binlog_disabled or
binlog_turned_off is better?
> We might fill in binlog_off more cases along the time.
>
Agreed
> cheers,
>
> Andrei
>
> >
> >
> > 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)
> >>
> >
> >
> >
> > --
> > MySQL Code Commits Mailing List
> > For list archives: http://lists.mysql.com/commits
> > To unsubscribe: http://lists.mysql.com/commits?unsub=1
>