MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
载入中...
搜索中...
未找到
sql_event.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/14.
13//
14
15#pragma once
16
17#include <string>
18#include <memory>
19#include "common/seda/stage_event.h"
20#include "sql/operator/physical_operator.h"
21
22class SessionEvent;
23class Stmt;
24class ParsedSqlNode;
25
29class SQLStageEvent : public common::StageEvent
30{
31public:
32 SQLStageEvent(SessionEvent *event, const std::string &sql);
33 virtual ~SQLStageEvent() noexcept;
34
35 SessionEvent *session_event() const
36 {
37 return session_event_;
38 }
39
40 const std::string &sql() const
41 {
42 return sql_;
43 }
44 const std::unique_ptr<ParsedSqlNode> &sql_node() const
45 {
46 return sql_node_;
47 }
48 Stmt *stmt() const
49 {
50 return stmt_;
51 }
52 std::unique_ptr<PhysicalOperator> &physical_operator()
53 {
54 return operator_;
55 }
56 const std::unique_ptr<PhysicalOperator> &physical_operator() const
57 {
58 return operator_;
59 }
60
61 void set_sql(const char *sql)
62 {
63 sql_ = sql;
64 }
65 void set_sql_node(std::unique_ptr<ParsedSqlNode> sql_node)
66 {
67 sql_node_ = std::move(sql_node);
68 }
69 void set_stmt(Stmt *stmt)
70 {
71 stmt_ = stmt;
72 }
73 void set_operator(std::unique_ptr<PhysicalOperator> oper)
74 {
75 operator_ = std::move(oper);
76 }
77
78private:
79 SessionEvent *session_event_ = nullptr;
80 std::string sql_;
81 std::unique_ptr<ParsedSqlNode> sql_node_;
82 Stmt *stmt_ = nullptr;
83 std::unique_ptr<PhysicalOperator> operator_;
84};
表示一个SQL语句
Definition: parse_defs.h:290
与SessionEvent类似,也是处理SQL请求的事件,只是用在SQL的不同阶段
Definition: sql_event.h:30
std::unique_ptr< PhysicalOperator > operator_
生成的执行计划,也可能没有
Definition: sql_event.h:83
Stmt * stmt_
Resolver之后生成的数据结构
Definition: sql_event.h:82
std::unique_ptr< ParsedSqlNode > sql_node_
语法解析后的SQL命令
Definition: sql_event.h:81
std::string sql_
处理的SQL语句
Definition: sql_event.h:80
表示一个SQL请求
Definition: session_event.h:32
Stmt for Statement
Definition: stmt.h:78