17#include "common/lang/vector.h"
18#include "storage/trx/trx.h"
19#include "storage/trx/mvcc_trx_log.h"
32 const vector<FieldMeta> *trx_fields()
const override;
35 Trx *create_trx(
LogHandler &log_handler, int32_t trx_id)
override;
36 void destroy_trx(
Trx *trx)
override;
38 void all_trxes(vector<Trx *> &trxes)
override;
43 int32_t next_trx_id();
46 int32_t max_trx_id()
const;
49 vector<FieldMeta> fields_;
51 atomic<int32_t> current_trx_id_{0};
74 RC insert_record(
Table *table,
Record &record)
override;
75 RC delete_record(
Table *table,
Record &record)
override;
76 RC update_record(
Table *table,
Record &old_record,
Record &new_record)
override {
return RC::UNIMPLEMENTED; };
90 RC start_if_need()
override;
92 RC rollback()
override;
94 RC redo(
Db *db,
const LogEntry &log_entry)
override;
96 int32_t id()
const override {
return trx_id_; }
99 RC commit_with_trx_id(int32_t commit_id);
103 static const int32_t MAX_TRX_ID = numeric_limits<int32_t>::max();
107 using OperationSet = vector<Operation>;
111 int32_t trx_id_ = -1;
112 bool started_ =
false;
113 bool recovering_ =
false;
114 OperationSet operations_;
一个DB实例负责管理一批表
Definition: db.h:46
描述一条日志
Definition: log_entry.h:44
对外提供服务的CLog模块
Definition: log_handler.h:40
日志回放接口类
Definition: log_replayer.h:26
Definition: mvcc_trx.h:26
处理事务日志的辅助类
Definition: mvcc_trx_log.h:110
多版本并发事务TODO 没有垃圾回收
Definition: mvcc_trx.h:63
void trx_fields(Table *table, Field &begin_xid_field, Field &end_xid_field) const
获取指定表上的事务使用的字段
Definition: mvcc_trx.cpp:237
RC visit_record(Table *table, Record &record, ReadWriteMode mode) override
当访问到某条数据时,使用此函数来判断是否可见,或者是否有访问冲突
Definition: mvcc_trx.cpp:175
表示一个记录
Definition: record.h:101
事务管理器
Definition: trx.h:99
事务接口
Definition: trx.h:141