MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
|
遍历某个文件中所有记录 更多...
#include <heap_record_scanner.h>
Public 成员函数 | |
HeapRecordScanner (Table *table, DiskBufferPool &buffer_pool, Trx *trx, LogHandler &log_handler, ReadWriteMode mode, ConditionFilter *condition_filter) | |
RC | open_scan () override |
打开一个文件扫描。 更多... | |
RC | close_scan () override |
关闭一个文件扫描,释放相应的资源 更多... | |
RC | next (Record &record) override |
获取下一条记录 更多... | |
virtual RC | open_scan ()=0 |
打开 RecordScanner 更多... | |
virtual RC | close_scan ()=0 |
关闭 RecordScanner,释放相应的资源 更多... | |
virtual RC | next (Record &record)=0 |
获取下一条记录 更多... | |
Private 成员函数 | |
RC | fetch_next_record () |
获取该文件中的下一条记录 更多... | |
RC | fetch_next_record_in_page () |
获取一个页面内的下一条记录 更多... | |
Private 属性 | |
Table * | table_ = nullptr |
当前遍历的是哪张表。这个字段仅供事务函数使用,如果设计合适,可以去掉 | |
DiskBufferPool * | disk_buffer_pool_ = nullptr |
当前访问的文件 | |
Trx * | trx_ = nullptr |
当前是哪个事务在遍历 | |
LogHandler * | log_handler_ = nullptr |
ReadWriteMode | rw_mode_ = ReadWriteMode::READ_WRITE |
遍历出来的数据,是否可能对它做修改 | |
BufferPoolIterator | bp_iterator_ |
遍历buffer pool的所有页面 | |
ConditionFilter * | condition_filter_ = nullptr |
过滤record | |
RecordPageHandler * | record_page_handler_ = nullptr |
处理文件某页面的记录 | |
RecordPageIterator | record_page_iterator_ |
遍历某个页面上的所有record | |
Record | next_record_ |
获取的记录放在这里缓存起来 | |
遍历某个文件中所有记录
遍历所有的页面,同时访问这些页面中所有的记录
|
overridevirtual |
关闭一个文件扫描,释放相应的资源
实现了 RecordScanner.
|
private |
获取该文件中的下一条记录
从当前位置开始找到下一条有效的记录
如果当前页面还有记录没有访问,就遍历当前的页面。 当前页面遍历完了,就遍历下一个页面,然后找到有效的记录
|
private |
获取一个页面内的下一条记录
遍历当前页面,尝试找到一条有效的记录
|
overridevirtual |
|
overridevirtual |
打开一个文件扫描。
实现了 RecordScanner.