summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugin/handler_socket/handlersocket/database.cpp4
-rw-r--r--sql/mdl.cc5
-rw-r--r--sql/mdl.h2
-rw-r--r--sql/rpl_gtid.cc2
-rw-r--r--sql/rpl_rli.cc2
-rw-r--r--sql/sql_class.cc2
-rw-r--r--sql/sql_class.h2
-rw-r--r--sql/sql_insert.cc2
-rw-r--r--sql/wsrep_client_service.cc2
-rw-r--r--sql/wsrep_high_priority_service.cc6
-rw-r--r--sql/wsrep_mysqld.cc2
-rw-r--r--sql/wsrep_schema.cc2
-rw-r--r--sql/wsrep_server_service.cc2
-rw-r--r--sql/wsrep_storage_service.cc4
-rw-r--r--sql/xa.cc5
15 files changed, 22 insertions, 22 deletions
diff --git a/plugin/handler_socket/handlersocket/database.cpp b/plugin/handler_socket/handlersocket/database.cpp
index 52ea8f2a8c4..9c0a2d81b98 100644
--- a/plugin/handler_socket/handlersocket/database.cpp
+++ b/plugin/handler_socket/handlersocket/database.cpp
@@ -471,9 +471,7 @@ dbcontext::close_tables_if()
unlock_tables_if();
DENA_VERBOSE(100, fprintf(stderr, "HNDSOCK close tables\n"));
close_thread_tables(thd);
- #if MYSQL_VERSION_ID >= 50505
- thd->mdl_context.release_transactional_locks();
- #endif
+ thd->mdl_context.release_transactional_locks(thd);
if (!table_vec.empty()) {
statistic_increment(close_tables_count, &LOCK_status);
table_vec.clear();
diff --git a/sql/mdl.cc b/sql/mdl.cc
index ebe1bb75927..93b7982c4a5 100644
--- a/sql/mdl.cc
+++ b/sql/mdl.cc
@@ -3033,18 +3033,17 @@ void MDL_context::rollback_to_savepoint(const MDL_savepoint &mdl_savepoint)
implementation of COMMIT (implicit or explicit) and ROLLBACK.
*/
-void MDL_context::release_transactional_locks()
+void MDL_context::release_transactional_locks(THD *thd)
{
DBUG_ENTER("MDL_context::release_transactional_locks");
/* Fail if there are active transactions */
- DBUG_ASSERT(!(current_thd->server_status &
+ DBUG_ASSERT(!(thd->server_status &
(SERVER_STATUS_IN_TRANS | SERVER_STATUS_IN_TRANS_READONLY)));
release_locks_stored_before(MDL_STATEMENT, NULL);
release_locks_stored_before(MDL_TRANSACTION, NULL);
DBUG_VOID_RETURN;
}
-
void MDL_context::release_statement_locks()
{
DBUG_ENTER("MDL_context::release_transactional_locks");
diff --git a/sql/mdl.h b/sql/mdl.h
index 123ffbcade6..9a788b0ea31 100644
--- a/sql/mdl.h
+++ b/sql/mdl.h
@@ -901,7 +901,7 @@ public:
void set_lock_duration(MDL_ticket *mdl_ticket, enum_mdl_duration duration);
void release_statement_locks();
- void release_transactional_locks();
+ void release_transactional_locks(THD *thd);
void release_explicit_locks();
void rollback_to_savepoint(const MDL_savepoint &mdl_savepoint);
diff --git a/sql/rpl_gtid.cc b/sql/rpl_gtid.cc
index 88e6447ddcc..3da3f554577 100644
--- a/sql/rpl_gtid.cc
+++ b/sql/rpl_gtid.cc
@@ -733,7 +733,7 @@ end:
if (in_transaction)
thd->mdl_context.release_statement_locks();
else
- thd->mdl_context.release_transactional_locks();
+ thd->release_transactional_locks();
}
thd->lex->restore_backup_query_tables_list(&lex_backup);
thd->variables.option_bits= thd_saved_option;
diff --git a/sql/rpl_rli.cc b/sql/rpl_rli.cc
index 39b2fa38515..bcdff1e33a8 100644
--- a/sql/rpl_rli.cc
+++ b/sql/rpl_rli.cc
@@ -1675,7 +1675,7 @@ end:
{
*out_hton= table->s->db_type();
close_thread_tables(thd);
- thd->mdl_context.release_transactional_locks();
+ thd->mdl_context.release_transactional_locks(thd);
}
return err;
}
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 573e4318682..ceb8dc1ade8 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -1544,7 +1544,7 @@ void THD::cleanup(void)
and left the mode a few lines above), there will be outstanding
metadata locks. Release them.
*/
- mdl_context.release_transactional_locks();
+ mdl_context.release_transactional_locks(this);
backup_end(this);
backup_unlock(this);
diff --git a/sql/sql_class.h b/sql/sql_class.h
index 845e392eff7..6b3c1594e60 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -4579,7 +4579,7 @@ public:
{
if (!(server_status &
(SERVER_STATUS_IN_TRANS | SERVER_STATUS_IN_TRANS_READONLY)))
- mdl_context.release_transactional_locks();
+ mdl_context.release_transactional_locks(this);
}
int decide_logging_format(TABLE_LIST *tables);
/*
diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc
index b8d11cd778f..01e5752def7 100644
--- a/sql/sql_insert.cc
+++ b/sql/sql_insert.cc
@@ -2241,7 +2241,7 @@ public:
if (table)
{
close_thread_tables(&thd);
- thd.mdl_context.release_transactional_locks();
+ thd.mdl_context.release_transactional_locks(&thd);
}
mysql_mutex_destroy(&mutex);
mysql_cond_destroy(&cond);
diff --git a/sql/wsrep_client_service.cc b/sql/wsrep_client_service.cc
index e563a0dba2d..934a9701b41 100644
--- a/sql/wsrep_client_service.cc
+++ b/sql/wsrep_client_service.cc
@@ -345,7 +345,7 @@ int Wsrep_client_service::bf_rollback()
{
m_thd->global_read_lock.unlock_global_read_lock(m_thd);
}
- m_thd->mdl_context.release_transactional_locks();
+ m_thd->release_transactional_locks();
m_thd->mdl_context.release_explicit_locks();
DBUG_RETURN(ret);
diff --git a/sql/wsrep_high_priority_service.cc b/sql/wsrep_high_priority_service.cc
index 0aeedbd7516..d52dcfdba3f 100644
--- a/sql/wsrep_high_priority_service.cc
+++ b/sql/wsrep_high_priority_service.cc
@@ -274,7 +274,7 @@ int Wsrep_high_priority_service::append_fragment_and_commit(
ret= ret || trans_commit(m_thd);
m_thd->wsrep_cs().after_applying();
- m_thd->mdl_context.release_transactional_locks();
+ m_thd->release_transactional_locks();
free_root(m_thd->mem_root, MYF(MY_KEEP_PREALLOC));
@@ -316,7 +316,7 @@ int Wsrep_high_priority_service::commit(const wsrep::ws_handle& ws_handle,
m_rgi->cleanup_context(thd, 0);
}
- m_thd->mdl_context.release_transactional_locks();
+ m_thd->release_transactional_locks();
thd_proc_info(thd, "wsrep applier committed");
@@ -354,7 +354,7 @@ int Wsrep_high_priority_service::rollback(const wsrep::ws_handle& ws_handle,
DBUG_ENTER("Wsrep_high_priority_service::rollback");
m_thd->wsrep_cs().prepare_for_ordering(ws_handle, ws_meta, false);
int ret= (trans_rollback_stmt(m_thd) || trans_rollback(m_thd));
- m_thd->mdl_context.release_transactional_locks();
+ m_thd->release_transactional_locks();
m_thd->mdl_context.release_explicit_locks();
free_root(m_thd->mem_root, MYF(MY_KEEP_PREALLOC));
diff --git a/sql/wsrep_mysqld.cc b/sql/wsrep_mysqld.cc
index 99a8105efd9..7732dc0eefe 100644
--- a/sql/wsrep_mysqld.cc
+++ b/sql/wsrep_mysqld.cc
@@ -1187,7 +1187,7 @@ wsrep_append_fk_parent_table(THD* thd, TABLE_LIST* tables, wsrep::key_array* key
if (!WSREP(thd) || !WSREP_CLIENT(thd)) return;
TABLE_LIST *table;
- thd->mdl_context.release_transactional_locks();
+ thd->release_transactional_locks();
uint counter;
MDL_savepoint mdl_savepoint= thd->mdl_context.mdl_savepoint();
diff --git a/sql/wsrep_schema.cc b/sql/wsrep_schema.cc
index b1ad718255d..8a47bbec9b0 100644
--- a/sql/wsrep_schema.cc
+++ b/sql/wsrep_schema.cc
@@ -855,7 +855,7 @@ Wsrep_view Wsrep_schema::restore_view(THD* thd, const Wsrep_id& own_id) const {
close_thread_tables(thd);
}
}
- thd->mdl_context.release_transactional_locks();
+ thd->release_transactional_locks();
thd->variables.wsrep_sync_wait= wsrep_sync_wait_saved;
diff --git a/sql/wsrep_server_service.cc b/sql/wsrep_server_service.cc
index 57b9c7fd626..da021d4a7eb 100644
--- a/sql/wsrep_server_service.cc
+++ b/sql/wsrep_server_service.cc
@@ -248,7 +248,7 @@ void Wsrep_server_service::log_view(
WSREP_WARN("Failed to commit transaction for store view");
}
}
- applier->m_thd->mdl_context.release_transactional_locks();
+ applier->m_thd->release_transactional_locks();
}
/*
diff --git a/sql/wsrep_storage_service.cc b/sql/wsrep_storage_service.cc
index 2ad817fe25a..4885fd9f7e6 100644
--- a/sql/wsrep_storage_service.cc
+++ b/sql/wsrep_storage_service.cc
@@ -176,7 +176,7 @@ int Wsrep_storage_service::commit(const wsrep::ws_handle& ws_handle,
trans_rollback(m_thd);
}
m_thd->wsrep_cs().after_applying();
- m_thd->mdl_context.release_transactional_locks();
+ m_thd->release_transactional_locks();
DBUG_RETURN(ret);
}
@@ -191,7 +191,7 @@ int Wsrep_storage_service::rollback(const wsrep::ws_handle& ws_handle,
ws_handle, ws_meta, false) ||
trans_rollback(m_thd));
m_thd->wsrep_cs().after_applying();
- m_thd->mdl_context.release_transactional_locks();
+ m_thd->release_transactional_locks();
DBUG_RETURN(ret);
}
diff --git a/sql/xa.cc b/sql/xa.cc
index 6275532e035..85fbe9358a3 100644
--- a/sql/xa.cc
+++ b/sql/xa.cc
@@ -399,6 +399,7 @@ static bool xa_trans_force_rollback(THD *thd)
xid_cache_delete(thd, &thd->transaction.xid_state);
trans_track_end_trx(thd);
+ thd->mdl_context.release_transactional_locks(thd);
return rc;
}
@@ -603,7 +604,7 @@ bool trans_xa_commit(THD *thd)
xid_cache_delete(thd, &thd->transaction.xid_state);
trans_track_end_trx(thd);
- thd->mdl_context.release_transactional_locks();
+ thd->mdl_context.release_transactional_locks(thd);
DBUG_RETURN(res);
}
@@ -677,6 +678,8 @@ bool trans_xa_detach(THD *thd)
thd->transaction.all.no_2pc= 0;
thd->server_status&= ~(SERVER_STATUS_IN_TRANS |
SERVER_STATUS_IN_TRANS_READONLY);
+ thd->mdl_context.release_transactional_locks(thd);
+
return false;
#endif
}