Simplify interface to connect methods in server
This commit is contained in:
parent
e3f89e5dba
commit
6d45d27cbc
@ -34,7 +34,6 @@
|
|||||||
*/
|
*/
|
||||||
#define MYSQL_SERVER 1
|
#define MYSQL_SERVER 1
|
||||||
#include <sql_class.h>
|
#include <sql_class.h>
|
||||||
#include <probes_mysql.h>
|
|
||||||
#include <scheduler.h>
|
#include <scheduler.h>
|
||||||
#include <debug_sync.h>
|
#include <debug_sync.h>
|
||||||
#include <sql_profile.h>
|
#include <sql_profile.h>
|
||||||
@ -55,9 +54,10 @@ bool do_command(THD *thd);
|
|||||||
ensure that the proper MySQL Server logic attached to these events is
|
ensure that the proper MySQL Server logic attached to these events is
|
||||||
executed.
|
executed.
|
||||||
*/
|
*/
|
||||||
bool login_connection(THD *thd);
|
bool thd_prepare_connection(THD *thd);
|
||||||
void prepare_new_connection_state(THD* thd);
|
bool thd_is_connection_alive(THD *thd);
|
||||||
void end_connection(THD *thd);
|
void end_connection(THD *thd);
|
||||||
|
void mysql_audit_release(THD *thd);
|
||||||
bool setup_connection_thread_globals(THD *thd);
|
bool setup_connection_thread_globals(THD *thd);
|
||||||
bool init_new_connection_handler_thread();
|
bool init_new_connection_handler_thread();
|
||||||
|
|
||||||
|
@ -685,6 +685,32 @@ pthread_handler_t handle_one_connection(void *arg)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool thd_prepare_connection(THD *thd)
|
||||||
|
{
|
||||||
|
bool rc;
|
||||||
|
lex_start(thd);
|
||||||
|
rc= login_connection(thd);
|
||||||
|
MYSQL_AUDIT_NOTIFY_CONNECTION_CONNECT(thd);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
|
MYSQL_CONNECTION_START(thd->thread_id, &thd->security_ctx->priv_user[0],
|
||||||
|
(char *) thd->security_ctx->host_or_ip);
|
||||||
|
|
||||||
|
prepare_new_connection_state(thd);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool thd_is_connection_alive(THD *thd)
|
||||||
|
{
|
||||||
|
NET *net= &thd->net;
|
||||||
|
if (!net->error &&
|
||||||
|
net->vio != 0 &&
|
||||||
|
!(thd->killed == THD::KILL_CONNECTION))
|
||||||
|
return TRUE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
void do_handle_one_connection(THD *thd_arg)
|
void do_handle_one_connection(THD *thd_arg)
|
||||||
{
|
{
|
||||||
THD *thd= thd_arg;
|
THD *thd= thd_arg;
|
||||||
@ -727,22 +753,13 @@ void do_handle_one_connection(THD *thd_arg)
|
|||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
NET *net= &thd->net;
|
|
||||||
bool rc;
|
bool rc;
|
||||||
|
|
||||||
lex_start(thd);
|
rc= thd_prepare_connection(thd);
|
||||||
rc= login_connection(thd);
|
|
||||||
MYSQL_AUDIT_NOTIFY_CONNECTION_CONNECT(thd);
|
|
||||||
if (rc)
|
if (rc)
|
||||||
goto end_thread;
|
goto end_thread;
|
||||||
|
|
||||||
MYSQL_CONNECTION_START(thd->thread_id, &thd->security_ctx->priv_user[0],
|
while (thd_is_connection_alive(thd))
|
||||||
(char *) thd->security_ctx->host_or_ip);
|
|
||||||
|
|
||||||
prepare_new_connection_state(thd);
|
|
||||||
|
|
||||||
while (!net->error && net->vio != 0 &&
|
|
||||||
!(thd->killed == THD::KILL_CONNECTION))
|
|
||||||
{
|
{
|
||||||
mysql_audit_release(thd);
|
mysql_audit_release(thd);
|
||||||
if (do_command(thd))
|
if (do_command(thd))
|
||||||
|
@ -35,6 +35,8 @@ void time_out_user_resource_limits(THD *thd, USER_CONN *uc);
|
|||||||
void decrease_user_connections(USER_CONN *uc);
|
void decrease_user_connections(USER_CONN *uc);
|
||||||
void thd_init_client_charset(THD *thd, uint cs_number);
|
void thd_init_client_charset(THD *thd, uint cs_number);
|
||||||
bool setup_connection_thread_globals(THD *thd);
|
bool setup_connection_thread_globals(THD *thd);
|
||||||
|
bool thd_prepare_connection(THD *thd);
|
||||||
|
bool thd_is_connection_alive(THD *thd);
|
||||||
|
|
||||||
int check_user(THD *thd, enum enum_server_command command,
|
int check_user(THD *thd, enum enum_server_command command,
|
||||||
const char *passwd, uint passwd_len, const char *db,
|
const char *passwd, uint passwd_len, const char *db,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user