MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
全部  文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义  
session.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 Wangyunlai on 2021/5/12.
13//
14
15#pragma once
16
17#include "common/types.h"
18#include "common/lang/string.h"
19
20class Trx;
21class Db;
22class SessionEvent;
23
29{
30public:
35 static Session &default_session();
36
37public:
38 Session() = default;
39 ~Session();
40
41 Session(const Session &other);
42 void operator=(Session &) = delete;
43
44 const char *get_current_db_name() const;
45 Db *get_current_db() const;
46
52 void set_current_db(const string &dbname);
53
57 void set_trx_multi_operation_mode(bool multi_operation_mode);
58
62 bool is_trx_multi_operation_mode() const;
63
69
70 void destroy_trx();
71
75 void set_current_request(SessionEvent *request);
76
81
82 void set_sql_debug(bool sql_debug) { sql_debug_ = sql_debug; }
83 bool sql_debug_on() const { return sql_debug_; }
84
85 void set_hash_join(bool hash_join) { hash_join_ = hash_join; }
86 bool hash_join_on() const { return hash_join_; }
87
88 void set_use_cascade(bool use_cascade) { use_cascade_ = use_cascade; }
89 bool use_cascade() const { return use_cascade_; }
90
91 void set_execution_mode(const ExecutionMode mode) { execution_mode_ = mode; }
92 ExecutionMode get_execution_mode() const { return execution_mode_; }
93
94 bool used_chunk_mode() { return used_chunk_mode_; }
95
96 void set_used_chunk_mode(bool used_chunk_mode) { used_chunk_mode_ = used_chunk_mode; }
97
102 static void set_current_session(Session *session);
103
108 static Session *current_session();
109
110private:
111 Db *db_ = nullptr;
112 Trx *trx_ = nullptr;
114
116
117 bool sql_debug_ = false;
118 bool hash_join_ = false;
119 bool use_cascade_ = false;
120
121 // 是否使用了 `chunk_iterator` 模式。 只有在设置了 `chunk_iterator`
122 // 并且可以生成相关物理执行计划时才会使用 `chunk_iterator` 模式。
123 bool used_chunk_mode_ = false;
124
125 ExecutionMode execution_mode_ = ExecutionMode::TUPLE_ITERATOR;
126};
一个DB实例负责管理一批表
Definition: db.h:46
表示一个SQL请求
Definition: session_event.h:29
表示会话
Definition: session.h:29
bool use_cascade_
是否使用 cascade 优化器
Definition: session.h:119
static Session * current_session()
获取当前的会话
Definition: session.cpp:91
bool sql_debug_
是否输出SQL调试信息
Definition: session.h:117
static Session & default_session()
获取默认的会话数据,新生成的会话都基于默认会话设置参数
Definition: session.cpp:21
bool is_trx_multi_operation_mode() const
当前事务是否为多语句模式
Definition: session.cpp:65
bool hash_join_
是否使用hash join
Definition: session.h:118
static void set_current_session(Session *session)
将指定会话设置到线程变量中
Definition: session.cpp:89
void set_current_request(SessionEvent *request)
设置当前正在处理的请求
Definition: session.cpp:93
bool trx_multi_operation_mode_
当前事务的模式,是否多语句模式. 单语句模式自动提交
Definition: session.h:115
SessionEvent * current_request_
当前正在处理的请求
Definition: session.h:113
Trx * current_trx()
当前会话关联的事务
Definition: session.cpp:67
SessionEvent * current_request() const
获取当前正在处理的请求
Definition: session.cpp:95
void set_current_db(const string &dbname)
设置当前会话关联的数据库
Definition: session.cpp:47
void set_trx_multi_operation_mode(bool multi_operation_mode)
设置当前事务为多语句模式,需要明确的指出提交或回滚
Definition: session.cpp:60
事务接口
Definition: trx.h:141