diff --git a/db/db_impl.cc b/db/db_impl.cc index 9dc5220..4c0f2e5 100644 --- a/db/db_impl.cc +++ b/db/db_impl.cc @@ -1276,6 +1276,7 @@ Status DBImpl::Put(const WriteOptions& opt, const Slice& key, const Slice& val) // TODO: allocate slot_num in slotpage and put value in vlog size_t slot_num = slot_page_->alloc_slot(); +// std::string slot_num_str((char *)&slot_num, sizeof(size_t)); struct slot_content sc; vlog_set_->put_value(&sc.vlog_num, &sc.value_offset, val); slot_page_->set_slot(slot_num, &sc); diff --git a/db/vlog.h b/db/vlog.h index 20c1ceb..b48d72b 100644 --- a/db/vlog.h +++ b/db/vlog.h @@ -19,7 +19,7 @@ // config file: | vlog_nums_(size_t) | vlog_1_name | vlog_2_name | ... | // vlog: | curr_size(size_t) | value_nums(size_t) | value1 | value2 | ... | -// value: | value_size(uint16_t) | field_nums(uint16_t) | slot_num(size_t) | value | +// value: | value_size(uint16_t) | slot_num(size_t) | field_nums(uint16_t) | value | #define vlog_num_size sizeof(size_t) #define vlog_name_size 256 diff --git a/db/vlog_set.cpp b/db/vlog_set.cpp index e598c03..84793bf 100644 --- a/db/vlog_set.cpp +++ b/db/vlog_set.cpp @@ -290,7 +290,7 @@ struct vlog_handler * VlogSet::get_vlog_handler(size_t vlog_num) { return vlog_handler_map_[get_vlog_name(vlog_num)]; } -// value: | field_nums(uint16_t) | slot_num(size_t) | value | +// value: | value_size(uint16_t) | slot_num(size_t) | field_nums(uint16_t) | value | void VlogSet::read_vlog_value(uint32_t vlog_num, uint32_t value_offset, std::string *value) { auto vlog_name = get_vlog_name(vlog_num); auto handler = std::fstream(vlog_name, std::ios::in | std::ios::out); @@ -302,8 +302,9 @@ void VlogSet::read_vlog_value(uint32_t vlog_num, uint32_t value_offset, std::str uint16_t value_size; memcpy(&value_size, value_buff, sizeof(uint16_t)); value_size &= VALUE_SIZE_MASK; - *value = std::string(value_buff); -// value->assign(&value_buff[sizeof(uint16_t)], value_size); +// *value = std::string(value_buff); + assert(value_size <= VALUE_BUFF_SIZE); + value->assign(&value_buff[sizeof(uint16_t)], value_size); handler.close(); }