Commit 61bda9a2 authored by Seppo Jaakola's avatar Seppo Jaakola

Merged revisions 3425..3430 from mariadb-galera-5.5

parent 255e20a1
...@@ -2951,7 +2951,12 @@ void MDL_context::release_locks_stored_before(enum_mdl_duration duration, ...@@ -2951,7 +2951,12 @@ void MDL_context::release_locks_stored_before(enum_mdl_duration duration,
DBUG_VOID_RETURN; 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 Release all explicit locks in the context which correspond to the
same name/object as this lock request. same name/object as this lock request.
......
...@@ -782,6 +782,9 @@ public: ...@@ -782,6 +782,9 @@ public:
void release_statement_locks(); void release_statement_locks();
void release_transactional_locks(); void release_transactional_locks();
#ifdef WITH_WSREP
void release_explicit_locks();
#endif
void rollback_to_savepoint(const MDL_savepoint &mdl_savepoint); void rollback_to_savepoint(const MDL_savepoint &mdl_savepoint);
MDL_context_owner *get_owner() { return m_owner; } MDL_context_owner *get_owner() { return m_owner; }
......
...@@ -8617,6 +8617,9 @@ static void wsrep_client_rollback(THD *thd) ...@@ -8617,6 +8617,9 @@ static void wsrep_client_rollback(THD *thd)
/* Release transactional metadata locks. */ /* Release transactional metadata locks. */
thd->mdl_context.release_transactional_locks(); thd->mdl_context.release_transactional_locks();
/* release explicit MDL locks */
thd->mdl_context.release_explicit_locks();
if (thd->get_binlog_table_maps()) if (thd->get_binlog_table_maps())
{ {
WSREP_DEBUG("clearing binlog table map for BF abort (%ld)", thd->thread_id); 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( ...@@ -8790,11 +8793,11 @@ static inline wsrep_status_t wsrep_apply_rbr(
DBUG_RETURN(WSREP_FATAL); 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)) ((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); thd->wsrep_rli->cleanup_context(thd, 0);
if (error == 0) if (error == 0)
......
...@@ -714,7 +714,7 @@ bool wsrep_start_replication() ...@@ -714,7 +714,7 @@ bool wsrep_start_replication()
uint64_t caps = wsrep->capabilities (wsrep); uint64_t caps = wsrep->capabilities (wsrep);
wsrep_incremental_data_collection = wsrep_incremental_data_collection =
(caps & WSREP_CAP_WRITE_SET_INCREMENTS); !!(caps & WSREP_CAP_WRITE_SET_INCREMENTS);
char* opts= wsrep->options_get(wsrep); char* opts= wsrep->options_get(wsrep);
if (opts) if (opts)
...@@ -1254,6 +1254,12 @@ int wsrep_to_isolation_begin(THD *thd, char *db_, char *table_, ...@@ -1254,6 +1254,12 @@ int wsrep_to_isolation_begin(THD *thd, char *db_, char *table_,
if (!ret) if (!ret)
{ {
thd->wsrep_exec_mode= TOTAL_ORDER; 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; return ret;
......
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