MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
载入中...
搜索中...
未找到
table_engine.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#pragma once
12
13#include "common/types.h"
14#include "common/lang/functional.h"
15#include "storage/table/table_meta.h"
16
17struct RID;
18class Record;
19class DiskBufferPool;
21class RecordScanner;
23class ConditionFilter;
25class Index;
26class IndexScanner;
27class RecordDeleter;
28class Trx;
29class Db;
30
35{
36public:
37 TableEngine(TableMeta *table_meta) : table_meta_(table_meta) {}
38 virtual ~TableEngine() = default;
39
40 virtual RC insert_record(Record &record) = 0;
41 virtual RC delete_record(const Record &record) = 0;
42 virtual RC insert_record_with_trx(Record &record, Trx *trx) = 0;
43 virtual RC delete_record_with_trx(const Record &record, Trx *trx) = 0;
44 virtual RC update_record_with_trx(const Record &old_record, const Record &new_record, Trx *trx) = 0;
45 virtual RC get_record(const RID &rid, Record &record) = 0;
46
47 virtual RC create_index(Trx *trx, const FieldMeta *field_meta, const char *index_name) = 0;
48 virtual RC get_record_scanner(RecordScanner *&scanner, Trx *trx, ReadWriteMode mode) = 0;
49 virtual RC get_chunk_scanner(ChunkFileScanner &scanner, Trx *trx, ReadWriteMode mode) = 0;
50 virtual RC visit_record(const RID &rid, function<bool(Record &)> visitor) = 0;
51 virtual RC sync() = 0;
52 virtual Index *find_index(const char *index_name) const = 0;
53 virtual Index *find_index_by_field(const char *field_name) const = 0;
54 virtual RC open() = 0;
55 // TODO: remove this function
56 virtual RC init() = 0;
57
58protected:
59 TableMeta *table_meta_ = nullptr;
60};
遍历某个文件中所有记录,每次返回一个 Chunk
Definition: record_manager.h:425
Definition: condition_filter.h:31
一个DB实例负责管理一批表
Definition: db.h:46
Definition: condition_filter.h:44
BufferPool的实现
Definition: disk_buffer_pool.h:189
字段元数据
Definition: field_meta.h:30
索引扫描器
Definition: index.h:104
索引基类
Definition: index.h:38
管理整个文件中记录的增删改查
Definition: record_manager.h:358
遍历某个表中所有记录
Definition: record_scanner.h:21
表示一个记录
Definition: record.h:101
table engine
Definition: table_engine.h:35
表元数据
Definition: table_meta.h:29
事务接口
Definition: trx.h:141
标识一个记录的位置 一个记录是放在某个文件的某个页面的某个槽位。这里不记录文件信息,记录页面和槽位信息
Definition: record.h:35