diff options
author | Andrei Elkin <andrei.elkin@oracle.com> | 2012-04-21 13:24:39 +0300 |
---|---|---|
committer | Andrei Elkin <andrei.elkin@oracle.com> | 2012-04-21 13:24:39 +0300 |
commit | 14de6de946d78dc2c5674d7d1e27edc170e5de6b (patch) | |
tree | 5f529072426678936974bb7abecd548dc5af7004 /sql/slave.cc | |
parent | dcb5071b1906d76b4c61d3125ddc7368f3ee8c4f (diff) | |
parent | 49e484c8cd2e362e843bbd5d756422cc7e2686d3 (diff) | |
download | mariadb-git-14de6de946d78dc2c5674d7d1e27edc170e5de6b.tar.gz |
merge bug11754117-45670 fixes from 5.1.
Diffstat (limited to 'sql/slave.cc')
-rw-r--r-- | sql/slave.cc | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sql/slave.cc b/sql/slave.cc index 757107250db..94425317a77 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -2557,7 +2557,8 @@ static int exec_relay_log_event(THD* thd, Relay_log_info* rli) used to read info about the relay log's format; it will be deleted when the SQL thread does not need it, i.e. when this thread terminates. */ - if (ev->get_type_code() != FORMAT_DESCRIPTION_EVENT) + if (ev->get_type_code() != FORMAT_DESCRIPTION_EVENT && + !rli->is_deferred_event(ev)) { DBUG_PRINT("info", ("Deleting the event after it has been executed")); delete ev; @@ -3219,6 +3220,12 @@ pthread_handler_t handle_slave_sql(void *arg) goto err; } thd->init_for_queries(); + thd->rli_slave= rli; + if ((rli->deferred_events_collecting= rpl_filter->is_on())) + { + rli->deferred_events= new Deferred_log_events(rli); + } + thd->temporary_tables = rli->save_temporary_tables; // restore temp tables set_thd_in_use_temporary_tables(rli); // (re)set sql_thd in use for saved temp tables mysql_mutex_lock(&LOCK_thread_count); |