Commit 2c31370a authored by guilhem@mysql.com's avatar guilhem@mysql.com

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.
parent 9c4b9e6d
...@@ -820,7 +820,9 @@ Query_log_event::Query_log_event(THD* thd_arg, const char* query_arg, ...@@ -820,7 +820,9 @@ Query_log_event::Query_log_event(THD* thd_arg, const char* query_arg,
ulong query_length, bool using_trans) ulong query_length, bool using_trans)
:Log_event(thd_arg, 0, using_trans), data_buf(0), query(query_arg), :Log_event(thd_arg, 0, using_trans), data_buf(0), query(query_arg),
db(thd_arg->db), q_len((uint32) query_length), 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), thread_id(thd_arg->thread_id),
/* save the original thread id; we already know the server id */ /* save the original thread id; we already know the server id */
slave_proxy_id(thd_arg->slave_proxy_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