summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeppo Jaakola <seppo.jaakola@codership.com>2013-10-07 09:43:19 +0300
committerSeppo Jaakola <seppo.jaakola@codership.com>2013-10-07 09:43:19 +0300
commit61bda9a2f0017b1fbe88c63a0ada68ad1024a72c (patch)
tree63dd7c635aac24f7259fa925037013f7e3fc105b
parent255e20a17534cf3b56201562990d5e5e01bccd33 (diff)
downloadmariadb-git-61bda9a2f0017b1fbe88c63a0ada68ad1024a72c.tar.gz
Merged revisions 3425..3430 from mariadb-galera-5.5
-rw-r--r--sql/mdl.cc7
-rw-r--r--sql/mdl.h3
-rw-r--r--sql/sql_parse.cc9
-rw-r--r--sql/wsrep_mysqld.cc8
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;