函数所在文件:sql/sql_parse.cc
该函数是处理单个查询请求的接口函数。
主要流程如下:
1.初始化线程
hread_scheduler.init_new_connection_thread()
2.在完成必要的检查和初始化后,进入一个for(;;)循环。
3.认证用户
if (login_connection(thd)) goto end_thread;
4.初始化thd来接受查询
prepare_new_connection_state(thd);
5,执行查询代码
while (!net->error && net->vio != 0 && !(thd->killed == THD::KILL_CONNECTION)) { if (do_command(thd)) break; }
可见,do_command(thd)是实际处理查询的函数。
6.进入到连接结束和清理阶段
close_connection(thd, 0, 1); if (thread_scheduler.end_thread(thd,1)) return 0; // Probably no-threads