diff --git a/include/mysql/thread_pool_priv.h b/include/mysql/thread_pool_priv.h index b0b0aadc7ff..fc9a2bc6424 100644 --- a/include/mysql/thread_pool_priv.h +++ b/include/mysql/thread_pool_priv.h @@ -94,6 +94,8 @@ bool thd_is_connection_alive(THD *thd); void close_connection(THD *thd, uint errcode); /* End the connection before closing it */ void end_connection(THD *thd); +/* Cleanup the THD object */ +void thd_cleanup(THD *thd); /* Decrement connection counter */ void dec_connection_count(); /* Destroy THD object */ diff --git a/sql/mysqld.cc b/sql/mysqld.cc index d67a04bcc23..8ea076e72ba 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -2008,6 +2008,19 @@ extern "C" sig_handler end_thread_signal(int sig __attribute__((unused))) } +/* + Cleanup THD object + + SYNOPSIS + thd_cleanup() + thd Thread handler +*/ + +void thd_cleanup(THD *thd) +{ + thd->cleanup(); +} + /* Decrease number of connections @@ -2054,6 +2067,7 @@ void unlink_thd(THD *thd) DBUG_ENTER("unlink_thd"); DBUG_PRINT("enter", ("thd: 0x%lx", (long) thd)); + thd_cleanup(thd); dec_connection_count(); mysql_mutex_lock(&LOCK_thread_count); delete_thd(thd);