|
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.