MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
|
表 更多...
#include <table.h>
Public 成员函数 | |
RC | create (Db *db, int32_t table_id, const char *path, const char *name, const char *base_dir, span< const AttrInfoSqlNode > attributes, StorageFormat storage_format, StorageEngine storage_engine) |
RC | open (Db *db, const char *meta_file, const char *base_dir) |
RC | make_record (int value_num, const Value *values, Record &record) |
根据给定的字段生成一个记录/行 更多... | |
RC | insert_record (Record &record) |
在当前的表中插入一条记录 更多... | |
RC | delete_record (const Record &record) |
RC | get_record (const RID &rid, Record &record) |
RC | create_index (Trx *trx, const FieldMeta *field_meta, const char *index_name) |
RC | get_record_scanner (RecordScanner *&scanner, Trx *trx, ReadWriteMode mode) |
RC | get_chunk_scanner (ChunkFileScanner &scanner, Trx *trx, ReadWriteMode mode) |
RC | visit_record (const RID &rid, function< bool(Record &)> visitor) |
可以在页面锁保护的情况下访问记录 更多... | |
int32_t | table_id () const |
const char * | name () const |
Db * | db () const |
const TableMeta & | table_meta () const |
RC | sync () |
Index * | find_index (const char *index_name) const |
Index * | find_index_by_field (const char *field_name) const |
Private 成员函数 | |
RC | set_value_to_record (char *record_data, const Value &value, const FieldMeta *field) |
Private 属性 | |
Db * | db_ = nullptr |
TableMeta | table_meta_ |
unique_ptr< TableEngine > | engine_ = nullptr |
友元 | |
class | TableEngine |
class | HeapTableEngine |
表
RC Table::create | ( | Db * | db, |
int32_t | table_id, | ||
const char * | path, | ||
const char * | name, | ||
const char * | base_dir, | ||
span< const AttrInfoSqlNode > | attributes, | ||
StorageFormat | storage_format, | ||
StorageEngine | storage_engine | ||
) |
创建一个表
path | 元数据保存的文件(完整路径) |
name | 表名 |
base_dir | 表数据存放的路径 |
attribute_count | 字段个数 |
attributes | 字段 |
RC Table::insert_record | ( | Record & | record | ) |
在当前的表中插入一条记录
在表文件和索引中插入关联数据。这里只管在表中插入数据,不关心事务相关操作。
record[in/out] | 传入的数据包含具体的数据,插入成功会通过此字段返回RID |
根据给定的字段生成一个记录/行
通常是由用户传过来的字段,按照schema信息组装成一个record。
value_num | 字段的个数 |
values | 每个字段的值 |
record | 生成的记录数据 |
RC Table::open | ( | Db * | db, |
const char * | meta_file, | ||
const char * | base_dir | ||
) |
打开一个表
meta_file | 保存表元数据的文件完整路径 |
base_dir | 表所在的文件夹,表记录数据文件、索引数据文件存放位置 |
可以在页面锁保护的情况下访问记录
当前是在事务中访问记录,为了提供一个“原子性”的访问模式
rid | |
visitor |