MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
载入中...
搜索中...
未找到
Public 成员函数 | Private 成员函数 | Private 属性 | 所有成员列表
Table类 参考

更多...

#include <table.h>

Public 成员函数

RC create (int32_t table_id, const char *path, const char *name, const char *base_dir, int attribute_count, const AttrInfoSqlNode attributes[])
 
RC open (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 visit_record (const RID &rid, bool readonly, std::function< void(Record &)> visitor)
 
RC get_record (const RID &rid, Record &record)
 
RC recover_insert_record (Record &record)
 
RC create_index (Trx *trx, const FieldMeta *field_meta, const char *index_name)
 
RC get_record_scanner (RecordFileScanner &scanner, Trx *trx, bool readonly)
 
RecordFileHandlerrecord_handler () const
 
int32_t table_id () const
 
const char * name () const
 
const TableMetatable_meta () const
 
RC sync ()
 
Indexfind_index (const char *index_name) const
 
Indexfind_index_by_field (const char *field_name) const
 

Private 成员函数

RC insert_entry_of_indexes (const char *record, const RID &rid)
 
RC delete_entry_of_indexes (const char *record, const RID &rid, bool error_on_not_exists)
 
RC init_record_handler (const char *base_dir)
 

Private 属性

std::string base_dir_
 
TableMeta table_meta_
 
DiskBufferPooldata_buffer_pool_ = nullptr
 
RecordFileHandlerrecord_handler_ = nullptr
 数据文件关联的buffer pool
 
std::vector< Index * > indexes_
 记录操作
 

详细描述

成员函数说明

◆ create()

RC Table::create ( int32_t  table_id,
const char *  path,
const char *  name,
const char *  base_dir,
int  attribute_count,
const AttrInfoSqlNode  attributes[] 
)

创建一个表

参数
path元数据保存的文件(完整路径)
name表名
base_dir表数据存放的路径
attribute_count字段个数
attributes字段

◆ create_index()

RC Table::create_index ( Trx trx,
const FieldMeta field_meta,
const char *  index_name 
)

接下来将这个索引放到表的元数据中

内存中有一份元数据,磁盘文件也有一份元数据。修改磁盘文件时,先创建一个临时文件,写入完成后再rename为正式文件 这样可以防止文件内容不完整

◆ insert_record()

RC Table::insert_record ( Record record)

在当前的表中插入一条记录

在表文件和索引中插入关联数据。这里只管在表中插入数据,不关心事务相关操作。

参数
record[in/out]传入的数据包含具体的数据,插入成功会通过此字段返回RID

◆ make_record()

RC Table::make_record ( int  value_num,
const Value values,
Record record 
)

根据给定的字段生成一个记录/行

通常是由用户传过来的字段,按照schema信息组装成一个record。

参数
value_num字段的个数
values每个字段的值
record生成的记录数据

◆ open()

RC Table::open ( const char *  meta_file,
const char *  base_dir 
)

打开一个表

参数
meta_file保存表元数据的文件完整路径
base_dir表所在的文件夹,表记录数据文件、索引数据文件存放位置

该类的文档由以下文件生成: