diff options
author | unknown <dli@dev3-164.dev.cn.tlan> | 2006-12-22 09:59:27 +0800 |
---|---|---|
committer | unknown <dli@dev3-164.dev.cn.tlan> | 2006-12-22 09:59:27 +0800 |
commit | 727ffbf37613c516cdb78d32b4ebd23cec4c83aa (patch) | |
tree | 0838cb804a8daedcba9dc9c9f0ed4d827e92b590 /sql | |
parent | 479ffe15cb7b0b41d812d2a8469a1117b8e23664 (diff) | |
download | mariadb-git-727ffbf37613c516cdb78d32b4ebd23cec4c83aa.tar.gz |
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:
don't set -1 to last_slave_errno.
sql/protocol.h:
added function store(int from) to return last_slave_errno.
sql/slave.cc:
should use int instead of uint32 type to return last_slave_errno.
Diffstat (limited to 'sql')
-rw-r--r-- | sql/log_event.cc | 23 | ||||
-rw-r--r-- | sql/protocol.h | 2 | ||||
-rw-r--r-- | sql/slave.cc | 2 |
3 files changed, 23 insertions, 4 deletions
diff --git a/sql/log_event.cc b/sql/log_event.cc index faff2cae48e..8813b243788 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 85c22724b74..f9305c2c896 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 5d871a64347..5b338747397 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); |