|
MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
|
表 更多...
#include <table.h>
Public 成员函数 | |
| RC | create (Db *db, int32_t table_id, const char *path, const char *name, const char *base_dir, span< const AttrInfoSqlNode > attributes, const vector< string > &primary_keys, StorageFormat storage_format, StorageEngine storage_engine) |
| RC | open (Db *db, 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 | insert_record_with_trx (Record &record, Trx *trx) |
| RC | delete_record_with_trx (const Record &record, Trx *trx) |
| RC | update_record_with_trx (const Record &old_record, const Record &new_record, Trx *trx) |
| RC | get_record (const RID &rid, Record &record) |
| RC | create_index (Trx *trx, const FieldMeta *field_meta, const char *index_name) |
| RC | get_record_scanner (RecordScanner *&scanner, Trx *trx, ReadWriteMode mode) |
| RC | get_chunk_scanner (ChunkFileScanner &scanner, Trx *trx, ReadWriteMode mode) |
| RC | visit_record (const RID &rid, function< bool(Record &)> visitor) |
| 可以在页面锁保护的情况下访问记录 更多... | |
| int32_t | table_id () const |
| const char * | name () const |
| Db * | db () const |
| const TableMeta & | table_meta () const |
| RC | sync () |
| Index * | find_index (const char *index_name) const |
| Index * | find_index_by_field (const char *field_name) const |
Private 成员函数 | |
| RC | set_value_to_record (char *record_data, const Value &value, const FieldMeta *field) |
Private 属性 | |
| Db * | db_ = nullptr |
| TableMeta | table_meta_ |
| unique_ptr< TableEngine > | engine_ = nullptr |
友元 | |
| class | TableEngine |
| class | HeapTableEngine |
表
| RC Table::create | ( | Db * | db, |
| int32_t | table_id, | ||
| const char * | path, | ||
| const char * | name, | ||
| const char * | base_dir, | ||
| span< const AttrInfoSqlNode > | attributes, | ||
| const vector< string > & | primary_keys, | ||
| StorageFormat | storage_format, | ||
| StorageEngine | storage_engine | ||
| ) |
创建一个表
| path | 元数据保存的文件(完整路径) |
| name | 表名 |
| base_dir | 表数据存放的路径 |
| attribute_count | 字段个数 |
| attributes | 字段 |
| RC Table::insert_record | ( | Record & | record | ) |
在当前的表中插入一条记录
在表文件和索引中插入关联数据。这里只管在表中插入数据,不关心事务相关操作。
| record[in/out] | 传入的数据包含具体的数据,插入成功会通过此字段返回RID |
根据给定的字段生成一个记录/行
通常是由用户传过来的字段,按照schema信息组装成一个record。
| value_num | 字段的个数 |
| values | 每个字段的值 |
| record | 生成的记录数据 |
| RC Table::open | ( | Db * | db, |
| const char * | meta_file, | ||
| const char * | base_dir | ||
| ) |
打开一个表
| meta_file | 保存表元数据的文件完整路径 |
| base_dir | 表所在的文件夹,表记录数据文件、索引数据文件存放位置 |
可以在页面锁保护的情况下访问记录
当前是在事务中访问记录,为了提供一个“原子性”的访问模式
| rid | |
| visitor |