diff options
-rw-r--r-- | plugin/handler_socket/handlersocket/database.cpp | 4 | ||||
-rw-r--r-- | sql/mdl.cc | 5 | ||||
-rw-r--r-- | sql/mdl.h | 2 | ||||
-rw-r--r-- | sql/rpl_gtid.cc | 2 | ||||
-rw-r--r-- | sql/rpl_rli.cc | 2 | ||||
-rw-r--r-- | sql/sql_class.cc | 2 | ||||
-rw-r--r-- | sql/sql_class.h | 2 | ||||
-rw-r--r-- | sql/sql_insert.cc | 2 | ||||
-rw-r--r-- | sql/wsrep_client_service.cc | 2 | ||||
-rw-r--r-- | sql/wsrep_high_priority_service.cc | 6 | ||||
-rw-r--r-- | sql/wsrep_mysqld.cc | 2 | ||||
-rw-r--r-- | sql/wsrep_schema.cc | 2 | ||||
-rw-r--r-- | sql/wsrep_server_service.cc | 2 | ||||
-rw-r--r-- | sql/wsrep_storage_service.cc | 4 | ||||
-rw-r--r-- | sql/xa.cc | 5 |
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 } |