diff --git a/include/mysql/thread_pool_priv.h b/include/mysql/thread_pool_priv.h index 7657e5912c8..34b1d7b270f 100644 --- a/include/mysql/thread_pool_priv.h +++ b/include/mysql/thread_pool_priv.h @@ -59,6 +59,7 @@ bool thd_is_transaction_active(THD *thd); int thd_connection_has_data(THD *thd); void thd_set_net_read_write(THD *thd, uint val); void thd_set_mysys_var(THD *thd, st_my_thread_var *mysys_var); +my_socket thd_get_fd(THD *thd); /* The thread pool must be able to execute commands using the connection @@ -85,14 +86,16 @@ bool init_new_connection_handler_thread(); /* thread_created is maintained by thread pool when activated since user threads are created by the thread pool (and also special - threads to maintain the thread pool). + threads to maintain the thread pool). This is done through + inc_thread_created. max_connections is needed to calculate the maximum number of threads - that is allowed to be started by the thread pool. + that is allowed to be started by the thread pool. The method + get_max_connections() gets reference to this variable. + connection_attrib is the thread attributes for connection threads, + the method get_connection_attrib provides a reference to these + attributes. */ -extern MYSQL_PLUGIN_IMPORT ulong thread_created; -extern MYSQL_PLUGIN_IMPORT ulong max_connections; -extern MYSQL_PLUGIN_IMPORT mysql_cond_t COND_thread_count; -extern MYSQL_PLUGIN_IMPORT pthread_attr_t connection_attrib; -/* extern MYSQL_PLUGIN_IMPORT I_List threads; */ -extern MYSQL_PLUGIN_IMPORT PSI_thread_key key_thread_one_connection; +pthread_attr_t *get_connection_attrib(void); +void inc_thread_created(void); +ulong get_max_connections(void); #endif diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 38dc3d6557e..8f5fed07948 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -4895,6 +4895,14 @@ static bool read_init_file(char *file_name) } +/** + Increment number of created threads +*/ +void inc_thread_created(void) +{ + thread_created++; +} + #ifndef EMBEDDED_LIBRARY /* diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 43e55f27502..39f80f2307d 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -433,6 +433,38 @@ void thd_set_mysys_var(THD *thd, st_my_thread_var *mysys_var) thd->set_mysys_var(mysys_var); } +/** + Get socket file descriptor for this connection + + @param thd THD object + + @retval Socket of the connection +*/ +my_socket thd_get_fd(THD *thd) +{ + return thd->net.vio->sd; +} + +/** + Get thread attributes for connection threads + + @retval Reference to thread attribute for connection threads +*/ +pthread_attr_t *get_connection_attrib(void) +{ + return &connection_attrib; +} + +/** + Get max number of connections + + @retval Max number of connections for MySQL Server +*/ +ulong get_max_connections(void) +{ + return max_connections; +} + /* The following functions form part of the C plugin API */