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

管理整个文件中记录的增删改查 更多...

#include <record_manager.h>

Public 成员函数

RC init (DiskBufferPool *buffer_pool)
 初始化 更多...
 
void close ()
 关闭,做一些资源清理的工作
 
RC delete_record (const RID *rid)
 从指定文件中删除指定槽位的记录 更多...
 
RC insert_record (const char *data, int record_size, RID *rid)
 插入一个新的记录到指定文件中,并返回该记录的标识符 更多...
 
RC recover_insert_record (const char *data, int record_size, const RID &rid)
 数据库恢复时,在指定文件指定位置插入数据 更多...
 
RC get_record (RecordPageHandler &page_handler, const RID *rid, bool readonly, Record *rec)
 获取指定文件中标识符为rid的记录内容到rec指向的记录结构中 更多...
 
RC visit_record (const RID &rid, bool readonly, std::function< void(Record &)> visitor)
 与get_record类似,访问某个记录,并提供回调函数来操作相应的记录 更多...
 

Private 成员函数

RC init_free_pages ()
 初始化当前没有填满记录的页面,初始化free_pages_成员
 

Private 属性

DiskBufferPooldisk_buffer_pool_ = nullptr
 
std::unordered_set< PageNum > free_pages_
 没有填充满的页面集合
 
common::Mutex lock_
 当编译时增加-DCONCURRENCY=ON 选项时,才会真正的支持并发
 

详细描述

管理整个文件中记录的增删改查

整个文件的组织格式请参考该文件中最前面的注释

成员函数说明

◆ delete_record()

RC RecordFileHandler::delete_record ( const RID rid)

从指定文件中删除指定槽位的记录

参数
rid待删除记录的标识符

◆ get_record()

RC RecordFileHandler::get_record ( RecordPageHandler page_handler,
const RID rid,
bool  readonly,
Record rec 
)

获取指定文件中标识符为rid的记录内容到rec指向的记录结构中

参数
page_handler[in]访问记录时,会拿住一些资源不释放,比如页面锁,使用这个对象保存相关的资源,并在析构时会自动释放
rid想要获取的记录ID
readonly获取的记录是只读的还是需要修改的
rec[out]通过这个参数返回获取到的记录
注解
rec 参数返回的记录并不会复制数据内存。page_handler 对象会拿着相关的资源,比如 pin 住页面和加上页面锁。 如果page_handler 释放了,那也不能再访问rec对象了。

◆ init()

RC RecordFileHandler::init ( DiskBufferPool buffer_pool)

初始化

参数
buffer_pool当前操作的是哪个文件

◆ insert_record()

RC RecordFileHandler::insert_record ( const char *  data,
int  record_size,
RID rid 
)

插入一个新的记录到指定文件中,并返回该记录的标识符

参数
data纪录内容
record_size记录大小
rid返回该记录的标识符

◆ recover_insert_record()

RC RecordFileHandler::recover_insert_record ( const char *  data,
int  record_size,
const RID rid 
)

数据库恢复时,在指定文件指定位置插入数据

参数
data记录内容
record_size记录大小
rid要插入记录的指定标识符

◆ visit_record()

RC RecordFileHandler::visit_record ( const RID rid,
bool  readonly,
std::function< void(Record &)>  visitor 
)

与get_record类似,访问某个记录,并提供回调函数来操作相应的记录

参数
rid想要访问的记录ID
readonly是否会修改记录
visitor访问记录的回调函数

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