I will take care of all your requests.
On 09/09/2010 10:23 AM, Daogang Qu wrote:
> Hi Alfranio,
> Nice work. Please see another comment below. Thanks!
> Best Regards,
> 2010/09/03 01:17, Alfranio Correia wrote:
> based onrevid:marc.alff@stripped
>> 3257 Alfranio Correia 2010-09-02
>> BUG#55704 incorrect binlogging of savepoints break slaves!
>> The replication was ignoring that a savepoint was valid within a
> transaction unless
>> it is released, implicit or explicitly, and was removing its occurrence
> from the
>> binary log when a rollback was issued.
>> To fix the problem, we always keep the savepoint definition in the binary
>> @ mysql-test/extra/rpl_tests/rpl_mixing_engines.inc
>> Improve this test case to easily generate savepoint and rollback to
> savepoint commands.
>> @ mysql-test/extra/rpl_tests/rpl_mixing_engines.test
>> + error= mysql_bin_log.write(&qinfo);
>> + binlog_trans_log_savepos(thd, (my_off_t*) sv);
>> + /* Write it to the binary log */
> What is the above comment for?
This comment is in the wrong place.
> Could you please
> add comment to explain how the savepoint is always
> written into binlog before binlog_trans_log_savepos(...)
> in next patch.
> Best Regards,
>> + DBUG_RETURN(error);
>> static int binlog_savepoint_rollback(handlerton *hton, THD *thd, void *sv)
>> @@ -725,7 +732,9 @@ static int binlog_savepoint_rollback(han
>> String log_query;
>> if (log_query.append(STRING_WITH_LEN("ROLLBACK TO ")) ||
>> - log_query.append(thd->lex->ident.str,
>> + log_query.append("`") ||
>> + log_query.append(thd->lex->ident.str,
> thd->lex->ident.length) ||
>> + log_query.append("`"))
>> int errcode= query_error_code(thd, thd->killed == THD::NOT_KILLED);
>> Query_log_event qinfo(thd, log_query.c_ptr_safe(), log_query.length(),