diff options
author | Seppo Jaakola <seppo.jaakola@codership.com> | 2013-10-07 09:43:19 +0300 |
---|---|---|
committer | Seppo Jaakola <seppo.jaakola@codership.com> | 2013-10-07 09:43:19 +0300 |
commit | 61bda9a2f0017b1fbe88c63a0ada68ad1024a72c (patch) | |
tree | 63dd7c635aac24f7259fa925037013f7e3fc105b | |
parent | 255e20a17534cf3b56201562990d5e5e01bccd33 (diff) | |
download | mariadb-git-61bda9a2f0017b1fbe88c63a0ada68ad1024a72c.tar.gz |
Merged revisions 3425..3430 from mariadb-galera-5.5
-rw-r--r-- | sql/mdl.cc | 7 | ||||
-rw-r--r-- | sql/mdl.h | 3 | ||||
-rw-r--r-- | sql/sql_parse.cc | 9 | ||||
-rw-r--r-- | sql/wsrep_mysqld.cc | 8 |
4 files changed, 22 insertions, 5 deletions
diff --git a/sql/mdl.cc b/sql/mdl.cc index c3aa4b2363b..7fbbfa74537 100644 --- a/sql/mdl.cc +++ b/sql/mdl.cc @@ -2951,7 +2951,12 @@ void MDL_context::release_locks_stored_before(enum_mdl_duration duration, DBUG_VOID_RETURN; } - +#ifdef WITH_WSREP +void MDL_context::release_explicit_locks() +{ + release_locks_stored_before(MDL_EXPLICIT, NULL); +} +#endif /** Release all explicit locks in the context which correspond to the same name/object as this lock request. diff --git a/sql/mdl.h b/sql/mdl.h index 8590450b76e..498c9fc3ba3 100644 --- a/sql/mdl.h +++ b/sql/mdl.h @@ -782,6 +782,9 @@ public: void release_statement_locks(); void release_transactional_locks(); +#ifdef WITH_WSREP + void release_explicit_locks(); +#endif void rollback_to_savepoint(const MDL_savepoint &mdl_savepoint); MDL_context_owner *get_owner() { return m_owner; } diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 2ecdf7cbdfb..72a8739261f 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -8617,6 +8617,9 @@ static void wsrep_client_rollback(THD *thd) /* Release transactional metadata locks. */ thd->mdl_context.release_transactional_locks(); + /* release explicit MDL locks */ + thd->mdl_context.release_explicit_locks(); + if (thd->get_binlog_table_maps()) { WSREP_DEBUG("clearing binlog table map for BF abort (%ld)", thd->thread_id); @@ -8790,11 +8793,11 @@ static inline wsrep_status_t wsrep_apply_rbr( DBUG_RETURN(WSREP_FATAL); } - if (ev->get_type_code() != TABLE_MAP_EVENT && + if ((ev->get_type_code() == WRITE_ROWS_EVENT || + ev->get_type_code() == UPDATE_ROWS_EVENT || + ev->get_type_code() == DELETE_ROWS_EVENT) && ((Rows_log_event *) ev)->get_flags(Rows_log_event::STMT_END_F)) { - // TODO: combine with commit on higher level common for the query ws - thd->wsrep_rli->cleanup_context(thd, 0); if (error == 0) diff --git a/sql/wsrep_mysqld.cc b/sql/wsrep_mysqld.cc index 2196a7b050c..14bc3e54845 100644 --- a/sql/wsrep_mysqld.cc +++ b/sql/wsrep_mysqld.cc @@ -714,7 +714,7 @@ bool wsrep_start_replication() uint64_t caps = wsrep->capabilities (wsrep); wsrep_incremental_data_collection = - (caps & WSREP_CAP_WRITE_SET_INCREMENTS); + !!(caps & WSREP_CAP_WRITE_SET_INCREMENTS); char* opts= wsrep->options_get(wsrep); if (opts) @@ -1254,6 +1254,12 @@ int wsrep_to_isolation_begin(THD *thd, char *db_, char *table_, if (!ret) { thd->wsrep_exec_mode= TOTAL_ORDER; + /* It makes sense to set auto_increment_* to defaults in TOI operations */ + if (wsrep_auto_increment_control) + { + thd->variables.auto_increment_offset = 1; + thd->variables.auto_increment_increment = 1; + } } } return ret; |