Patch to eliminate some valgrind warnings in debug printout code.
sql/rpl_rli.cc: Adding variable to mark an instance of Relay_log_info as fake. sql/rpl_rli.h: Adding variable to mark an instance of Relay_log_info as fake. sql/slave.cc: Not printing debug information if we are working with a fake instance of Relay_log_info. This because the result of calling update is nonsense, and trying to print it generates valgrind warnings. sql/sql_binlog.cc: Marking newly created instance of Relay_log_info as a fake instance.
This commit is contained in:
parent
6cb9dfed6f
commit
be5a46a69b
@ -33,7 +33,10 @@ Relay_log_info::Relay_log_info()
|
|||||||
:Slave_reporting_capability("SQL"),
|
:Slave_reporting_capability("SQL"),
|
||||||
no_storage(FALSE), replicate_same_server_id(::replicate_same_server_id),
|
no_storage(FALSE), replicate_same_server_id(::replicate_same_server_id),
|
||||||
info_fd(-1), cur_log_fd(-1), save_temporary_tables(0),
|
info_fd(-1), cur_log_fd(-1), save_temporary_tables(0),
|
||||||
group_relay_log_pos(0),
|
group_relay_log_pos(0), event_relay_log_pos(0),
|
||||||
|
#if HAVE_purify
|
||||||
|
is_fake(FALSE),
|
||||||
|
#endif
|
||||||
cur_log_old_open_count(0), group_master_log_pos(0), log_space_total(0),
|
cur_log_old_open_count(0), group_master_log_pos(0), log_space_total(0),
|
||||||
ignore_log_space_limit(0), last_master_timestamp(0), slave_skip_counter(0),
|
ignore_log_space_limit(0), last_master_timestamp(0), slave_skip_counter(0),
|
||||||
abort_pos_wait(0), slave_run_id(0), sql_thd(0),
|
abort_pos_wait(0), slave_run_id(0), sql_thd(0),
|
||||||
|
@ -154,6 +154,10 @@ public:
|
|||||||
ulonglong event_relay_log_pos;
|
ulonglong event_relay_log_pos;
|
||||||
ulonglong future_event_relay_log_pos;
|
ulonglong future_event_relay_log_pos;
|
||||||
|
|
||||||
|
#ifdef HAVE_purify
|
||||||
|
bool is_fake; /* Mark that this is a fake relay log info structure */
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Original log name and position of the group we're currently executing
|
Original log name and position of the group we're currently executing
|
||||||
(whose coordinates are group_relay_log_name/pos in the relay log)
|
(whose coordinates are group_relay_log_name/pos in the relay log)
|
||||||
|
22
sql/slave.cc
22
sql/slave.cc
@ -1892,14 +1892,19 @@ int apply_event_and_update_pos(Log_event* ev, THD* thd, Relay_log_info* rli,
|
|||||||
if (exec_res == 0)
|
if (exec_res == 0)
|
||||||
{
|
{
|
||||||
int error= ev->update_pos(rli);
|
int error= ev->update_pos(rli);
|
||||||
char buf[22];
|
#ifdef HAVE_purify
|
||||||
DBUG_PRINT("info", ("update_pos error = %d", error));
|
if (!rli->is_fake)
|
||||||
DBUG_PRINT("info", ("group %s %s",
|
#endif
|
||||||
llstr(rli->group_relay_log_pos, buf),
|
{
|
||||||
rli->group_relay_log_name));
|
char buf[22];
|
||||||
DBUG_PRINT("info", ("event %s %s",
|
DBUG_PRINT("info", ("update_pos error = %d", error));
|
||||||
llstr(rli->event_relay_log_pos, buf),
|
DBUG_PRINT("info", ("group %s %s",
|
||||||
rli->event_relay_log_name));
|
llstr(rli->group_relay_log_pos, buf),
|
||||||
|
rli->group_relay_log_name));
|
||||||
|
DBUG_PRINT("info", ("event %s %s",
|
||||||
|
llstr(rli->event_relay_log_pos, buf),
|
||||||
|
rli->event_relay_log_name));
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
The update should not fail, so print an error message and
|
The update should not fail, so print an error message and
|
||||||
return an error code.
|
return an error code.
|
||||||
@ -1909,6 +1914,7 @@ int apply_event_and_update_pos(Log_event* ev, THD* thd, Relay_log_info* rli,
|
|||||||
*/
|
*/
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
|
char buf[22];
|
||||||
rli->report(ERROR_LEVEL, ER_UNKNOWN_ERROR,
|
rli->report(ERROR_LEVEL, ER_UNKNOWN_ERROR,
|
||||||
"It was not possible to update the positions"
|
"It was not possible to update the positions"
|
||||||
" of the relay log information: the slave may"
|
" of the relay log information: the slave may"
|
||||||
|
@ -56,6 +56,9 @@ void mysql_client_binlog_statement(THD* thd)
|
|||||||
if (!thd->rli_fake)
|
if (!thd->rli_fake)
|
||||||
{
|
{
|
||||||
thd->rli_fake= new Relay_log_info;
|
thd->rli_fake= new Relay_log_info;
|
||||||
|
#ifdef HAVE_purify
|
||||||
|
thd->rli_fake->is_fake= TRUE;
|
||||||
|
#endif
|
||||||
have_fd_event= FALSE;
|
have_fd_event= FALSE;
|
||||||
}
|
}
|
||||||
if (thd->rli_fake && !thd->rli_fake->relay_log.description_event_for_exec)
|
if (thd->rli_fake && !thd->rli_fake->relay_log.description_event_for_exec)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user