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

负责处理行存页面中各种操作 更多...

#include <record_manager.h>

类 RowRecordPageHandler 继承关系图:
RecordPageHandler

Public 成员函数

virtual RC insert_record (const char *data, RID *rid) override
 插入一条记录 更多...
 
virtual RC recover_insert_record (const char *data, const RID &rid) override
 数据库恢复时,在指定位置插入数据 更多...
 
virtual RC delete_record (const RID *rid) override
 删除指定的记录 更多...
 
virtual RC update_record (const RID &rid, const char *data) override
 
virtual RC get_record (const RID &rid, Record &record) override
 获取指定位置的记录数据 更多...
 
- Public 成员函数 继承自 RecordPageHandler
 RecordPageHandler (StorageFormat storage_format)
 
RC init (DiskBufferPool &buffer_pool, LogHandler &log_handler, PageNum page_num, ReadWriteMode mode)
 初始化 更多...
 
RC recover_init (DiskBufferPool &buffer_pool, PageNum page_num)
 数据库恢复时,与普通的运行场景有所不同,不做任何并发操作,也不需要加锁 更多...
 
RC init_empty_page (DiskBufferPool &buffer_pool, LogHandler &log_handler, PageNum page_num, int record_size, TableMeta *table_meta)
 对一个新的页面做初始化,初始化关于该页面记录信息的页头PageHeader 更多...
 
RC init_empty_page (DiskBufferPool &buffer_pool, LogHandler &log_handler, PageNum page_num, int record_size, int col_num, const char *col_idx_data)
 对一个新的页面做初始化,初始化关于该页面记录信息的页头PageHeader,该函数用于日志回放时。 更多...
 
RC cleanup ()
 操作结束后做的清理工作,比如释放页面、解锁
 
virtual RC insert_record (const char *data, RID *rid)
 插入一条记录 更多...
 
virtual RC recover_insert_record (const char *data, const RID &rid)
 数据库恢复时,在指定位置插入数据 更多...
 
virtual RC delete_record (const RID *rid)
 删除指定的记录 更多...
 
virtual RC update_record (const RID &rid, const char *data)
 
virtual RC get_record (const RID &rid, Record &record)
 获取指定位置的记录数据 更多...
 
virtual RC get_chunk (Chunk &chunk)
 获取整个页面中指定列的所有记录。 更多...
 
PageNum get_page_num () const
 返回该记录页的页号
 
bool is_full () const
 当前页面是否已经没有空闲位置插入新的记录
 

额外继承的成员函数

- 静态 Public 成员函数 继承自 RecordPageHandler
static RecordPageHandlercreate (StorageFormat format)
 
- Protected 成员函数 继承自 RecordPageHandler
void fix_record_capacity ()
 
char * get_record_data (SlotNum slot_num)
 获取指定槽位的记录数据 更多...
 
- Protected 属性 继承自 RecordPageHandler
DiskBufferPooldisk_buffer_pool_ = nullptr
 当前操作的buffer pool(文件)
 
RecordLogHandler log_handler_
 当前操作的日志处理器
 
Frameframe_ = nullptr
 当前操作页面关联的frame(frame的更多概念可以参考buffer pool和frame)
 
ReadWriteMode rw_mode_ = ReadWriteMode::READ_WRITE
 当前的操作是否都是只读的
 
PageHeaderpage_header_ = nullptr
 当前页面上页面头
 
char * bitmap_ = nullptr
 当前页面上record分配状态信息bitmap内存起始位置
 
StorageFormat storage_format_
 

详细描述

负责处理行存页面中各种操作

行存格式实现,当前定长记录模式下每个页面的组织大概是这样的:

| PageHeader | record allocate bitmap |
|------------|------------------------|
| record1 | record2 | ..... | recordN |
数据文件,按照页面来组织,每一页都存放一些记录/数据行
Definition: record_manager.h:67

成员函数说明

◆ delete_record()

RC RowRecordPageHandler::delete_record ( const RID rid)
overridevirtual

删除指定的记录

参数
rid要删除的记录标识

重载 RecordPageHandler .

◆ get_record()

RC RowRecordPageHandler::get_record ( const RID rid,
Record record 
)
overridevirtual

获取指定位置的记录数据

参数
rid指定的位置
record返回指定的数据。这里不会将数据复制出来,而是使用指针,所以调用者必须保证数据使用期间受到保护

重载 RecordPageHandler .

◆ insert_record()

RC RowRecordPageHandler::insert_record ( const char *  data,
RID rid 
)
overridevirtual

插入一条记录

参数
data要插入的记录
rid如果插入成功,通过这个参数返回插入的位置

重载 RecordPageHandler .

◆ recover_insert_record()

RC RowRecordPageHandler::recover_insert_record ( const char *  data,
const RID rid 
)
overridevirtual

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

参数
data要插入的数据行
rid插入的位置

重载 RecordPageHandler .

◆ update_record()

RC RowRecordPageHandler::update_record ( const RID rid,
const char *  data 
)
overridevirtual

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