MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
|
SQL处理的session阶段,也是第一个阶段 更多...
#include <session_stage.h>
静态 Public 成员函数 | |
static Stage * | make_stage (const std::string &tag) |
Protected 成员函数 | |
SessionStage (const char *tag) | |
bool | set_properties () override |
bool | initialize () override |
void | cleanup () override |
void | handle_event (common::StageEvent *event) override |
void | handle_request (common::StageEvent *event) |
RC | handle_sql (SQLStageEvent *sql_event) |
Private 属性 | |
QueryCacheStage | query_cache_stage_ |
ParseStage | parse_stage_ |
ResolveStage | resolve_stage_ |
OptimizeStage | optimize_stage_ |
ExecuteStage | execute_stage_ |
SQL处理的session阶段,也是第一个阶段
|
protected |
处理一个SQL语句经历这几个阶段。 虽然看起来流程比较多,但是对于大多数SQL来说,更多的可以关注parse和executor阶段。 通常只有select、delete等带有查询条件的语句才需要进入optimize。 对于DDL语句,比如create table、create index等,没有对应的查询计划,可以直接搜索 create_table_executor、create_index_executor来看具体的执行代码。 select、delete等DML语句,会产生一些执行计划,如果感觉繁琐,可以跳过optimize直接看 execute_stage中的执行,通过explain语句看需要哪些operator,然后找对应的operator来 调试或者看代码执行过程即可。