MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
载入中...
搜索中...
未找到
default_handler.h
1/* Copyright (c) 2021 Xie Meiyi(xiemeiyi@hust.edu.cn) and 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 Meiyi & Longda on 2021/5/11.
13//
14#pragma once
15
16#include "storage/db/db.h"
17#include "common/lang/span.h"
18#include "common/lang/map.h"
19#include "common/lang/string.h"
20#include "common/lang/memory.h"
21
22class Trx;
23class TrxKit;
24
30{
31public:
33
34 virtual ~DefaultHandler() noexcept;
35
42 RC init(const char *base_dir, const char *trx_kit_name, const char *log_handler_name, const char *storage_engine);
43 void destroy();
44
50 RC create_db(const char *dbname);
51
57 RC drop_db(const char *dbname);
58
63 RC open_db(const char *dbname);
64
69 RC close_db(const char *dbname);
70
77 RC create_table(const char *dbname, const char *relation_name, span<const AttrInfoSqlNode> attributes);
78
85 RC drop_table(const char *dbname, const char *relation_name);
86
87public:
88 Db *find_db(const char *dbname) const;
89 Table *find_table(const char *dbname, const char *table_name) const;
90
91 RC sync();
92
93private:
94 filesystem::path base_dir_;
95 filesystem::path db_dir_;
98 map<string, Db *> opened_dbs_;
100};
一个DB实例负责管理一批表
Definition: db.h:46
数据库存储引擎的入口
Definition: default_handler.h:30
RC create_db(const char *dbname)
创建一个数据库
Definition: default_handler.cpp:81
string storage_engine_
存储引擎的名称
Definition: default_handler.h:99
string trx_kit_name_
事务模型的名称
Definition: default_handler.h:96
filesystem::path base_dir_
存储引擎的根目录
Definition: default_handler.h:94
filesystem::path db_dir_
数据库文件的根目录
Definition: default_handler.h:95
RC init(const char *base_dir, const char *trx_kit_name, const char *log_handler_name, const char *storage_engine)
初始化存储引擎
Definition: default_handler.cpp:33
RC close_db(const char *dbname)
关闭指定数据库。
Definition: default_handler.cpp:133
RC drop_table(const char *dbname, const char *relation_name)
删除指定数据库下的表
Definition: default_handler.cpp:145
map< string, Db * > opened_dbs_
打开的数据库
Definition: default_handler.h:98
string log_handler_name_
日志处理器的名称
Definition: default_handler.h:97
RC drop_db(const char *dbname)
删除数据库
Definition: default_handler.cpp:103
RC create_table(const char *dbname, const char *relation_name, span< const AttrInfoSqlNode > attributes)
在指定的数据库下创建一个表
Definition: default_handler.cpp:136
RC open_db(const char *dbname)
打开一个数据库
Definition: default_handler.cpp:105
Definition: table.h:42
事务管理器
Definition: trx.h:99
事务接口
Definition: trx.h:141