Commit d44d6976 authored by unknown's avatar unknown

Fix for BUG#3081 "if an INSERT DELAYED is killed, it is binlogged as killed but it's not needed".

INSERT DELAYED works only for one-row inserts (in latest 4.0 versions
at least). So killing a delayed_insert thread does not spoil replication:
the rows which actually went into the table are exactly those listed
in the binlog. So when the delayed_insert thread is killed, don't log
it as 'killed', because it causes superfluous stops on the slave.


sql/log_event.cc:
  INSERT DELAYED works only for one-row inserts (in latest 4.0 versions
  at least). So killing a delayed_insert thread does not spoil replication:
  the rows which actually went into the table are exactly those listed
  in the binlog. So when the delayed_insert thread is killed, don't log
  it as 'killed', because it causes superfluous stops on the slave.
parent eadfe4dd
......@@ -820,7 +820,9 @@ Query_log_event::Query_log_event(THD* thd_arg, const char* query_arg,
ulong query_length, bool using_trans)
:Log_event(thd_arg, 0, using_trans), data_buf(0), query(query_arg),
db(thd_arg->db), q_len((uint32) query_length),
error_code(thd_arg->killed ? ER_SERVER_SHUTDOWN: thd_arg->net.last_errno),
error_code(thd_arg->killed ?
((thd_arg->system_thread & SYSTEM_THREAD_DELAYED_INSERT) ?
0 : ER_SERVER_SHUTDOWN) : thd_arg->net.last_errno),
thread_id(thd_arg->thread_id),
/* save the original thread id; we already know the server id */
slave_proxy_id(thd_arg->slave_proxy_id)
......
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