Skip to content

Commit

Permalink
Add memcpy for record_ field in InsertLog
Browse files Browse the repository at this point in the history
Signed-off-by: Wenbo Li <[email protected]>
  • Loading branch information
hnjylwb committed Mar 13, 2024
1 parent 27479e2 commit b11f842
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 1 deletion.
1 change: 1 addition & 0 deletions src/log/log_records/delete_log.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ std::shared_ptr<DeleteLog> DeleteLog::DeserializeFrom(lsn_t lsn, const char *dat

void DeleteLog::Undo(BufferPool &buffer_pool, Catalog &catalog, LogManager &log_manager, lsn_t lsn,
lsn_t undo_next_lsn) {
// 恢复删除的记录
// LAB 2 BEGIN
}

Expand Down
6 changes: 5 additions & 1 deletion src/log/log_records/insert_log.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ InsertLog::InsertLog(lsn_t lsn, xid_t xid, lsn_t prev_lsn, oid_t oid, pageid_t p
page_offset_(page_offset),
record_size_(record_size),
record_(record) {
record_ = new char[record_size_];
memcpy(record_, record, record_size_);
size_ +=
sizeof(oid_) + sizeof(page_id_) + sizeof(slot_id_) + sizeof(page_offset_) + sizeof(record_size_) + record_size_;
}
Expand Down Expand Up @@ -61,7 +63,9 @@ std::shared_ptr<InsertLog> InsertLog::DeserializeFrom(lsn_t lsn, const char *dat
record = new char[record_size];
memcpy(record, data + offset, record_size);
offset += record_size;
return std::make_shared<InsertLog>(lsn, xid, prev_lsn, oid, page_id, slot_id, page_offset, record_size, record);
auto log = std::make_shared<InsertLog>(lsn, xid, prev_lsn, oid, page_id, slot_id, page_offset, record_size, record);
delete[] record;
return log;
}

void InsertLog::Undo(BufferPool &buffer_pool, Catalog &catalog, LogManager &log_manager, lsn_t lsn,
Expand Down

0 comments on commit b11f842

Please sign in to comment.