MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
载入中...
搜索中...
未找到
session_stage.h
1/* Copyright (c) 2021 OceanBase and/or its affiliates. All rights reserved.
2miniob is licensed under Mulan PSL v2.
3You can use this software according to the terms and conditions of the Mulan PSL v2.
4You may obtain a copy of Mulan PSL v2 at:
5 http://license.coscl.org.cn/MulanPSL2
6THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
7EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
8MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
9See the Mulan PSL v2 for more details. */
10
11//
12// Created by Longda on 2021/4/13.
13//
14
15#pragma once
16
17#include "common/seda/stage.h"
18#include "sql/query_cache/query_cache_stage.h"
19#include "sql/parser/parse_stage.h"
20#include "sql/parser/resolve_stage.h"
21#include "sql/optimizer/optimize_stage.h"
22#include "sql/executor/execute_stage.h"
23
40class SessionStage : public common::Stage
41{
42public:
43 virtual ~SessionStage();
44 static Stage *make_stage(const std::string &tag);
45
46protected:
47 // common function
48 SessionStage(const char *tag);
49 bool set_properties() override;
50
51 bool initialize() override;
52 void cleanup() override;
53 void handle_event(common::StageEvent *event) override;
54
55protected:
56 void handle_request(common::StageEvent *event);
57 RC handle_sql(SQLStageEvent *sql_event);
58
59private:
60 QueryCacheStage query_cache_stage_;
61 ParseStage parse_stage_;
62 ResolveStage resolve_stage_;
63 OptimizeStage optimize_stage_;
64 ExecuteStage execute_stage_;
65};
执行SQL语句的Stage,包括DML和DDL
Definition: execute_stage.h:31
Definition: optimize_stage.h:39
解析SQL语句,解析后的结果可以参考parse_defs.h
Definition: parse_stage.h:26
查询缓存处理
Definition: query_cache_stage.h:27
执行Resolve,将解析后的SQL语句,转换成各种Stmt(Statement), 同时会做错误检查
Definition: resolve_stage.h:26
与SessionEvent类似,也是处理SQL请求的事件,只是用在SQL的不同阶段
Definition: sql_event.h:30
SQL处理的session阶段,也是第一个阶段
Definition: session_stage.h:41
RC handle_sql(SQLStageEvent *sql_event)
Definition: session_stage.cpp:127