diff --git a/fielddb/field_db.cpp b/fielddb/field_db.cpp index 121f991..a9ebc01 100644 --- a/fielddb/field_db.cpp +++ b/fielddb/field_db.cpp @@ -227,7 +227,7 @@ Status FieldDB::HandleRequest(Request &req) { // 这里把一个空串作为常规put的name Status FieldDB::Put(const WriteOptions &options, const Slice &key, const Slice &value) { - FieldArray FA = {{"",value.ToString()}}; + FieldArray FA = {{EMPTY,value.ToString()}}; return PutFields(options, key, FA); // return kvDB_->Put(options, key, value); } diff --git a/fielddb/field_db.h b/fielddb/field_db.h index c19e7da..c21680a 100644 --- a/fielddb/field_db.h +++ b/fielddb/field_db.h @@ -18,6 +18,8 @@ namespace fielddb { using namespace leveldb; +const char EMPTY[1] = {0}; + enum IndexStatus{ Creating, Deleting, diff --git a/fielddb/request.cpp b/fielddb/request.cpp index cefb159..c08c58a 100644 --- a/fielddb/request.cpp +++ b/fielddb/request.cpp @@ -17,8 +17,6 @@ namespace fielddb { using namespace leveldb; -const char EMPTY[1] = {0}; - //为虚函数提供最基本的实现 void Request::PendReq(Request *req) { assert(0); @@ -340,13 +338,13 @@ BatchReq::BatchReq(WriteBatch *Batch,port::Mutex *mu): void Put(const Slice &key, const Slice &value) override { //为key和value构造存储的地方,防止由于string的析构造成可能得内存访问错误 str_buf->push_back(key.ToString()); - fa_buf->push_back({{EMPTY,value.ToString()}}); - // FieldArray *field = new FieldArray; - // field = ParseValue(value.ToString(), field); - // if (field->empty()){ //batch中的value没有field - // } else { - // fa_buf->push_back(*field); - // } + FieldArray *field = new FieldArray; + field = ParseValue(value.ToString(), field); + if (field->empty()){ //batch中的value没有field + fa_buf->push_back({{EMPTY,value.ToString()}}); + } else { + fa_buf->push_back(*field); + } sub_requests->emplace_back(new FieldsReq(&str_buf->back(),&fa_buf->back(),mu)); sub_requests->back()->parent = req;