/************************************************************************ Frees the global purge system control structure. */ UNIV_INTERN void trx_purge_sys_close(void) /*======================*/ { ut_ad(!mutex_own(&kernel_mutex)); que_graph_free(purge_sys->query); ut_a(purge_sys->sess->trx->is_purge); purge_sys->sess->trx->conc_state = TRX_NOT_STARTED; sess_close(purge_sys->sess); purge_sys->sess = NULL; if (purge_sys->view != NULL) { /* Because acquiring the kernel mutex is a pre-condition of read_view_close(). We don't really need it here. */ mutex_enter(&kernel_mutex); read_view_close(purge_sys->view); purge_sys->view = NULL; mutex_exit(&kernel_mutex); } trx_undo_arr_free(purge_sys->arr); rw_lock_free(&purge_sys->latch); mutex_free(&purge_sys->mutex); mem_heap_free(purge_sys->heap); mem_free(purge_sys); purge_sys = NULL; }
/*****************************************************************//** Frees the adaptive search system at a database shutdown. */ UNIV_INTERN void btr_search_sys_free(void) /*=====================*/ { rw_lock_free(&btr_search_latch); mem_free(btr_search_latch_temp); btr_search_latch_temp = NULL; mem_heap_free(btr_search_sys->hash_index->heap); hash_table_free(btr_search_sys->hash_index); mem_free(btr_search_sys); btr_search_sys = NULL; }