diff --git a/db/builder.cc b/db/builder.cc index 7cf13f8..a26d81f 100644 --- a/db/builder.cc +++ b/db/builder.cc @@ -40,9 +40,16 @@ Status BuildTable(const std::string& dbname, Env* env, const Options& options, TableBuilder* builder = new TableBuilder(options, file); meta->smallest.DecodeFrom(iter->key()); Slice key; + Slice value; for (; iter->Valid(); iter->Next()) { key = iter->key(); - builder->Add(key, iter->value()); + value=iter->value(); + if(meta->valuelog_id==0&&value.size()>0&&value.data()[0]==(char)(0x01)){ + Slice tmp_value=value; + tmp_value.remove_prefix(1); + assert(GetVarint64(&tmp_value,&meta->valuelog_id)); + } + builder->Add(key, value); } if (!key.empty()) { meta->largest.DecodeFrom(key); diff --git a/db/db_impl.cc b/db/db_impl.cc index 9f51f7b..78b92e0 100644 --- a/db/db_impl.cc +++ b/db/db_impl.cc @@ -1575,17 +1575,6 @@ void DBImpl::GetApproximateSizes(const Range* range, int n, uint64_t* sizes) { v->Unref(); } std::vector>> DBImpl::WriteValueLog(std::vector values){ - //lock - // std::vector>> res; - // for(int i=0;iAppend(values[i]); - // res.push_back({valuelogfile_number_,{valuelogfile_offset,len}}); - // valuelogfile_offset+=len; - // } - // //unlock - // valuelogfile_->Flush(); - // return res; std::string file_name_=ValueLogFileName(dbname_,valuelogfile_number_); std::ofstream valueFile(file_name_, std::ios::app | std::ios::binary); if (!valueFile.is_open()) { diff --git a/test/test.cpp b/test/test.cpp index 78240d9..37eb607 100644 --- a/test/test.cpp +++ b/test/test.cpp @@ -167,16 +167,17 @@ TEST(Test, LARGE_DATA_COMPACT_TEST) { abort(); } std::vector values; - for(int i=0;i<500000;i++){ + for(int i=0;i<5000;i++){ std::string key=std::to_string(i); std::string value; - for(int j=0;j<1000;j++){ + int len=rand()%496+5; + for(int j=0;jPut(writeOptions,key,value); } - for(int i=0;i<500000;i++){ + for(int i=0;i<5000;i++){ std::string key=std::to_string(i); std::string value; Status s=db->Get(readOptions,key,&value);