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() ...@@ -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 @@ class Relay_log_info : public Slave_reporting_capability ...@@ -154,6 +154,10 @@ class Relay_log_info : public Slave_reporting_capability
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)
......
...@@ -1892,6 +1892,10 @@ int apply_event_and_update_pos(Log_event* ev, THD* thd, Relay_log_info* rli, ...@@ -1892,6 +1892,10 @@ 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);
#ifdef HAVE_purify
if (!rli->is_fake)
#endif
{
char buf[22]; char buf[22];
DBUG_PRINT("info", ("update_pos error = %d", error)); DBUG_PRINT("info", ("update_pos error = %d", error));
DBUG_PRINT("info", ("group %s %s", 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, ...@@ -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", DBUG_PRINT("info", ("event %s %s",
llstr(rli->event_relay_log_pos, buf), llstr(rli->event_relay_log_pos, buf),
rli->event_relay_log_name)); 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, ...@@ -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) ...@@ -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)
......
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