Browse Source

fix deletion bug for version 2

xry
alexfisher 9 months ago
parent
commit
6102110245
4 changed files with 8 additions and 5 deletions
  1. +2
    -2
      CMakeLists.txt
  2. +1
    -1
      db/db_impl.cc
  3. +3
    -0
      include/leveldb/slice.h
  4. +2
    -2
      test/benchmark_4leveldb.cpp

+ 2
- 2
CMakeLists.txt View File

@ -521,7 +521,7 @@ add_executable(db_test1
"${PROJECT_SOURCE_DIR}/test/test.cpp"
)
target_link_libraries(db_test1 PRIVATE leveldb gtest)
add_executable(db_test2
add_executable(db_test_bench
"${PROJECT_SOURCE_DIR}/test/benchmark_4leveldb.cpp"
)
target_link_libraries(db_test2 PRIVATE leveldb gtest)
target_link_libraries(db_test_bench PRIVATE leveldb gtest)

+ 1
- 1
db/db_impl.cc View File

@ -1044,7 +1044,7 @@ Status DBImpl::DoCompactionWork(CompactionState* compact) {
Slice old_value=input->value();
Slice new_value;
std::string buf="";
if(old_value.data()[0]==(char)(0x00)){
if(old_value.size()==0||old_value.data()[0]==(char)(0x00)){//when it is a deletion, input->value() will be ""
new_value=old_value;
}
else{

+ 3
- 0
include/leveldb/slice.h View File

@ -69,6 +69,9 @@ class LEVELDB_EXPORT Slice {
// Drop the first "n" bytes from this slice.
void remove_prefix(size_t n) {
if(n>size()){
assert(0);
}
assert(n <= size());
data_ += n;
size_ -= n;

+ 2
- 2
test/benchmark_4leveldb.cpp View File

@ -7,11 +7,11 @@
#include "leveldb/db.h"
// 配置
const int TEST_EXPONENT = 4;
const int TEST_EXPONENT = 5;
const int TEST_FREQUENCY = static_cast<int>(std::pow(10, TEST_EXPONENT));
const int MIN_STR_LEN = 255;
const int MAX_STR_LEN = 1024;
const std::string DB_PATH = "./db_benchmark";
const std::string DB_PATH = "db_benchmark";
const std::string CHARSET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
// 多语言

Loading…
Cancel
Save