Commit 6f6fabb7 authored by unknown's avatar unknown

Patch to eliminate some valgrind warnings in debug printout code.

(originally from Mats)


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.
parent f1f2bd8c
......@@ -33,7 +33,10 @@ Relay_log_info::Relay_log_info()
:Slave_reporting_capability("SQL"),
no_storage(FALSE), replicate_same_server_id(::replicate_same_server_id),
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),
ignore_log_space_limit(0), last_master_timestamp(0), slave_skip_counter(0),
abort_pos_wait(0), slave_run_id(0), sql_thd(0),
......
......@@ -154,6 +154,10 @@ public:
ulonglong 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
(whose coordinates are group_relay_log_name/pos in the relay log)
......
......@@ -1892,6 +1892,10 @@ int apply_event_and_update_pos(Log_event* ev, THD* thd, Relay_log_info* rli,
if (exec_res == 0)
{
int error= ev->update_pos(rli);
#ifdef HAVE_purify
if (!rli->is_fake)
#endif
{
char buf[22];
DBUG_PRINT("info", ("update_pos error = %d", error));
DBUG_PRINT("info", ("group %s %s",
......@@ -1900,6 +1904,7 @@ int apply_event_and_update_pos(Log_event* ev, THD* thd, Relay_log_info* rli,
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
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)
{
char buf[22];
rli->report(ERROR_LEVEL, ER_UNKNOWN_ERROR,
"It was not possible to update the positions"
" of the relay log information: the slave may"
......
......@@ -56,6 +56,9 @@ void mysql_client_binlog_statement(THD* thd)
if (!thd->rli_fake)
{
thd->rli_fake= new Relay_log_info;
#ifdef HAVE_purify
thd->rli_fake->is_fake= TRUE;
#endif
have_fd_event= FALSE;
}
if (thd->rli_fake && !thd->rli_fake->relay_log.description_event_for_exec)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment