From fcb0e53b758c13893fe110b57e4d026cf92acab2 Mon Sep 17 00:00:00 2001 From: "dli@dev3-164.dev.cn.tlan" <> Date: Fri, 22 Dec 2006 09:59:27 +0800 Subject: [PATCH] ndb - fixed for BUG#19896 Last_Errno: 4294967295, Error in Write_rows event: (error number 4 billion ?) fixed to use int instead of uint32 type to return last_slave_errno. --- sql/log_event.cc | 23 ++++++++++++++++++++--- sql/protocol.h | 2 ++ sql/slave.cc | 2 +- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/sql/log_event.cc b/sql/log_event.cc index faff2cae48..8813b24378 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -5485,9 +5485,26 @@ int Rows_log_event::exec_event(st_relay_log_info *rli) { if (!need_reopen) { - slave_print_msg(ERROR_LEVEL, rli, error, - "Error in %s event: when locking tables", - get_type_str()); + if (thd->query_error || thd->is_fatal_error) + { + /* + Error reporting borrowed from Query_log_event with many excessive + simplifications (we don't honour --slave-skip-errors) + */ + uint actual_error= thd->net.last_errno; + slave_print_msg(ERROR_LEVEL, rli, actual_error, + "Error '%s' in %s event: when locking tables", + (actual_error ? thd->net.last_error : + "unexpected success or fatal error"), + get_type_str()); + thd->is_fatal_error= 1; + } + else + { + slave_print_msg(ERROR_LEVEL, rli, error, + "Error in %s event: when locking tables", + get_type_str()); + } rli->clear_tables_to_lock(); DBUG_RETURN(error); } diff --git a/sql/protocol.h b/sql/protocol.h index 85c22724b7..f9305c2c89 100644 --- a/sql/protocol.h +++ b/sql/protocol.h @@ -59,6 +59,8 @@ public: String *storage_packet() { return packet; } inline void free() { packet->free(); } virtual bool write(); + inline bool store(int from) + { return store_long((longlong) from); } inline bool store(uint32 from) { return store_long((longlong) from); } inline bool store(longlong from) diff --git a/sql/slave.cc b/sql/slave.cc index 5d871a6434..5b33874739 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -2237,7 +2237,7 @@ bool show_master_info(THD* thd, MASTER_INFO* mi) rpl_filter->get_wild_ignore_table(&tmp); protocol->store(&tmp); - protocol->store((uint32) mi->rli.last_slave_errno); + protocol->store(mi->rli.last_slave_errno); protocol->store(mi->rli.last_slave_error, &my_charset_bin); protocol->store((uint32) mi->rli.slave_skip_counter); protocol->store((ulonglong) mi->rli.group_master_log_pos); -- 2.30.9