summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <dli@dev3-164.dev.cn.tlan>2006-12-22 09:59:27 +0800
committerunknown <dli@dev3-164.dev.cn.tlan>2006-12-22 09:59:27 +0800
commit727ffbf37613c516cdb78d32b4ebd23cec4c83aa (patch)
tree0838cb804a8daedcba9dc9c9f0ed4d827e92b590 /sql
parent479ffe15cb7b0b41d812d2a8469a1117b8e23664 (diff)
downloadmariadb-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.cc23
-rw-r--r--sql/protocol.h2
-rw-r--r--sql/slave.cc2
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);