9ee68871dc
Summary: As title. This diff added an option reduce_level to CompactRange. When set to true, it will try to move the files back to the minimum level sufficient to hold the data set. Note that the default is set to true now, just to excerise it in all existing tests. Will set the default to false before check-in, for backward compatibility. Test Plan: make check; Reviewers: dhruba, emayanke CC: leveldb Differential Revision: https://reviews.facebook.net/D11553
78 lines
2.4 KiB
C++
78 lines
2.4 KiB
C++
// Copyright (c) 2012 Facebook. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef STORAGE_LEVELDB_DB_DB_IMPL_READONLY_H_
|
|
#define STORAGE_LEVELDB_DB_DB_IMPL_READONLY_H_
|
|
|
|
#include "db/db_impl.h"
|
|
|
|
#include <deque>
|
|
#include <set>
|
|
#include "db/dbformat.h"
|
|
#include "db/log_writer.h"
|
|
#include "db/snapshot.h"
|
|
#include "leveldb/db.h"
|
|
#include "leveldb/env.h"
|
|
#include "port/port.h"
|
|
#include "util/stats_logger.h"
|
|
|
|
#ifdef USE_SCRIBE
|
|
#include "scribe/scribe_logger.h"
|
|
#endif
|
|
|
|
namespace leveldb {
|
|
|
|
class DBImplReadOnly : public DBImpl {
|
|
public:
|
|
DBImplReadOnly(const Options& options, const std::string& dbname);
|
|
virtual ~DBImplReadOnly();
|
|
|
|
// Implementations of the DB interface
|
|
virtual Status Get(const ReadOptions& options,
|
|
const Slice& key,
|
|
std::string* value);
|
|
virtual Iterator* NewIterator(const ReadOptions&);
|
|
|
|
virtual Status Put(const WriteOptions&, const Slice& key, const Slice& value) {
|
|
return Status::NotSupported("Not supported operation in read only mode.");
|
|
}
|
|
virtual Status Merge(const WriteOptions&, const Slice& key,
|
|
const Slice& value) {
|
|
return Status::NotSupported("Not supported operation in read only mode.");
|
|
}
|
|
virtual Status Delete(const WriteOptions&, const Slice& key) {
|
|
return Status::NotSupported("Not supported operation in read only mode.");
|
|
}
|
|
virtual Status Write(const WriteOptions& options, WriteBatch* updates) {
|
|
return Status::NotSupported("Not supported operation in read only mode.");
|
|
}
|
|
virtual void CompactRange(const Slice* begin, const Slice* end,
|
|
bool reduce_level = false) {
|
|
}
|
|
virtual Status DisableFileDeletions() {
|
|
return Status::NotSupported("Not supported operation in read only mode.");
|
|
}
|
|
virtual Status EnableFileDeletions() {
|
|
return Status::NotSupported("Not supported operation in read only mode.");
|
|
}
|
|
virtual Status GetLiveFiles(std::vector<std::string>&,
|
|
uint64_t* manifest_file_size) {
|
|
return Status::NotSupported("Not supported operation in read only mode.");
|
|
}
|
|
virtual Status Flush(const FlushOptions& options) {
|
|
return Status::NotSupported("Not supported operation in read only mode.");
|
|
}
|
|
|
|
private:
|
|
friend class DB;
|
|
|
|
// No copying allowed
|
|
DBImplReadOnly(const DBImplReadOnly&);
|
|
void operator=(const DBImplReadOnly&);
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|