10225501448 李度 10225101546 陈胤遒 10215501422 高宇菲
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 

33 lignes
1.5 KiB

#include "db/db_impl.h"
#include "leveldb/db.h"
#include "leveldb/options.h"
#include "leveldb/status.h"
namespace leveldb{
class FieldDB:leveldb::DB {
public:
/*lab1的要求*/
Status Put(const WriteOptions &options, const Slice &key, const Slice &value) override;
Status PutFields(const WriteOptions &, const Slice &key, const FieldArray &fields) override;
Status Delete(const WriteOptions &options, const Slice &key) override;
Status Write(const WriteOptions &options, WriteBatch *updates) override;
Status Get(const ReadOptions &options, const Slice &key, std::string *value) override;
Status GetFields(const ReadOptions &options, const Slice &key, FieldArray *fields) override;
std::vector<std::string> FindKeysByField(Field &field) override;
Iterator * NewIterator(const ReadOptions &options) override;
const Snapshot * GetSnapshot() override;
void ReleaseSnapshot(const Snapshot *snapshot) override;
bool GetProperty(const Slice &property, std::string *value) override;
void GetApproximateSizes(const Range *range, int n, uint64_t *sizes) override;
void CompactRange(const Slice *begin, const Slice *end) override;
/*与索引相关*/
bool CreateIndexOnField(const std::string& field_name);
bool DeleteIndex(std::string &field_name);
std::vector<std::string> QueryByIndex(Field &field);
private:
static Status OpenFieldDB(const Options& options,const std::string& name,DB** dbptr);
leveldb::DBImpl *indexDB;
leveldb::DBImpl *kvDB;
};
} // end of namespace