mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Reuse THD for new user connections
- To ensure that mallocs are marked for the correct THD, even if it's allocated in another thread, I added the thread_id to the THD constructor - Added st_my_thread_var to thr_lock_info_init() to avoid a call to my_thread_var - Moved things from THD::THD() to THD::init() - Moved some things to THD::cleanup() - Added THD::free_connection() and THD::reset_for_reuse() - Added THD to CONNECT::create_thd() - Added THD::thread_dbug_id and st_my_thread_var->dbug_id. These are needed to ensure that we have a constant thread_id used for debugging with a THD, even if it changes thread_id (=connection_id) - Set variables.pseudo_thread_id in constructor. Removed not needed sets.
This commit is contained in:
@@ -328,14 +328,28 @@ PROFILING::PROFILING()
|
||||
}
|
||||
|
||||
PROFILING::~PROFILING()
|
||||
{
|
||||
restart();
|
||||
}
|
||||
|
||||
/*
|
||||
Restart profiling from scratch
|
||||
*/
|
||||
|
||||
void PROFILING::restart()
|
||||
{
|
||||
while (! history.is_empty())
|
||||
delete history.pop();
|
||||
|
||||
if (current != NULL)
|
||||
delete current;
|
||||
/* Ensure that profiling object can be reused */
|
||||
profile_id_counter= 1;
|
||||
current= NULL;
|
||||
last= NULL;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Throw away the current profile, because it's useless or unwanted
|
||||
or corrupted.
|
||||
@@ -675,6 +689,6 @@ int PROFILING::fill_statistics_info(THD *thd_arg, TABLE_LIST *tables, Item *cond
|
||||
|
||||
void PROFILING::reset()
|
||||
{
|
||||
enabled= thd->variables.option_bits & OPTION_PROFILING;
|
||||
enabled= (thd->variables.option_bits & OPTION_PROFILING) != 0;
|
||||
}
|
||||
#endif /* ENABLED_PROFILING */
|
||||
|
||||
Reference in New Issue
Block a user