db_impl_readonly.h 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
  2. // This source code is licensed under both the GPLv2 (found in the
  3. // COPYING file in the root directory) and Apache 2.0 License
  4. // (found in the LICENSE.Apache file in the root directory).
  5. #pragma once
  6. #ifndef ROCKSDB_LITE
  7. #include <string>
  8. #include <vector>
  9. #include "db/db_impl/db_impl.h"
  10. namespace ROCKSDB_NAMESPACE {
  11. class DBImplReadOnly : public DBImpl {
  12. public:
  13. DBImplReadOnly(const DBOptions& options, const std::string& dbname);
  14. // No copying allowed
  15. DBImplReadOnly(const DBImplReadOnly&) = delete;
  16. void operator=(const DBImplReadOnly&) = delete;
  17. virtual ~DBImplReadOnly();
  18. // Implementations of the DB interface
  19. using DB::Get;
  20. virtual Status Get(const ReadOptions& options,
  21. ColumnFamilyHandle* column_family, const Slice& key,
  22. PinnableSlice* value) override;
  23. // TODO: Implement ReadOnly MultiGet?
  24. using DBImpl::NewIterator;
  25. virtual Iterator* NewIterator(const ReadOptions&,
  26. ColumnFamilyHandle* column_family) override;
  27. virtual Status NewIterators(
  28. const ReadOptions& options,
  29. const std::vector<ColumnFamilyHandle*>& column_families,
  30. std::vector<Iterator*>* iterators) override;
  31. using DBImpl::Put;
  32. virtual Status Put(const WriteOptions& /*options*/,
  33. ColumnFamilyHandle* /*column_family*/,
  34. const Slice& /*key*/, const Slice& /*value*/) override {
  35. return Status::NotSupported("Not supported operation in read only mode.");
  36. }
  37. using DBImpl::Merge;
  38. virtual Status Merge(const WriteOptions& /*options*/,
  39. ColumnFamilyHandle* /*column_family*/,
  40. const Slice& /*key*/, const Slice& /*value*/) override {
  41. return Status::NotSupported("Not supported operation in read only mode.");
  42. }
  43. using DBImpl::Delete;
  44. virtual Status Delete(const WriteOptions& /*options*/,
  45. ColumnFamilyHandle* /*column_family*/,
  46. const Slice& /*key*/) override {
  47. return Status::NotSupported("Not supported operation in read only mode.");
  48. }
  49. using DBImpl::SingleDelete;
  50. virtual Status SingleDelete(const WriteOptions& /*options*/,
  51. ColumnFamilyHandle* /*column_family*/,
  52. const Slice& /*key*/) override {
  53. return Status::NotSupported("Not supported operation in read only mode.");
  54. }
  55. virtual Status Write(const WriteOptions& /*options*/,
  56. WriteBatch* /*updates*/) override {
  57. return Status::NotSupported("Not supported operation in read only mode.");
  58. }
  59. using DBImpl::CompactRange;
  60. virtual Status CompactRange(const CompactRangeOptions& /*options*/,
  61. ColumnFamilyHandle* /*column_family*/,
  62. const Slice* /*begin*/,
  63. const Slice* /*end*/) override {
  64. return Status::NotSupported("Not supported operation in read only mode.");
  65. }
  66. using DBImpl::CompactFiles;
  67. virtual Status CompactFiles(
  68. const CompactionOptions& /*compact_options*/,
  69. ColumnFamilyHandle* /*column_family*/,
  70. const std::vector<std::string>& /*input_file_names*/,
  71. const int /*output_level*/, const int /*output_path_id*/ = -1,
  72. std::vector<std::string>* const /*output_file_names*/ = nullptr,
  73. CompactionJobInfo* /*compaction_job_info*/ = nullptr) override {
  74. return Status::NotSupported("Not supported operation in read only mode.");
  75. }
  76. virtual Status DisableFileDeletions() override {
  77. return Status::NotSupported("Not supported operation in read only mode.");
  78. }
  79. virtual Status EnableFileDeletions(bool /*force*/) override {
  80. return Status::NotSupported("Not supported operation in read only mode.");
  81. }
  82. virtual Status GetLiveFiles(std::vector<std::string>& ret,
  83. uint64_t* manifest_file_size,
  84. bool /*flush_memtable*/) override {
  85. return DBImpl::GetLiveFiles(ret, manifest_file_size,
  86. false /* flush_memtable */);
  87. }
  88. using DBImpl::Flush;
  89. virtual Status Flush(const FlushOptions& /*options*/,
  90. ColumnFamilyHandle* /*column_family*/) override {
  91. return Status::NotSupported("Not supported operation in read only mode.");
  92. }
  93. using DBImpl::SyncWAL;
  94. virtual Status SyncWAL() override {
  95. return Status::NotSupported("Not supported operation in read only mode.");
  96. }
  97. using DB::IngestExternalFile;
  98. virtual Status IngestExternalFile(
  99. ColumnFamilyHandle* /*column_family*/,
  100. const std::vector<std::string>& /*external_files*/,
  101. const IngestExternalFileOptions& /*ingestion_options*/) override {
  102. return Status::NotSupported("Not supported operation in read only mode.");
  103. }
  104. using DB::CreateColumnFamilyWithImport;
  105. virtual Status CreateColumnFamilyWithImport(
  106. const ColumnFamilyOptions& /*options*/,
  107. const std::string& /*column_family_name*/,
  108. const ImportColumnFamilyOptions& /*import_options*/,
  109. const ExportImportFilesMetaData& /*metadata*/,
  110. ColumnFamilyHandle** /*handle*/) override {
  111. return Status::NotSupported("Not supported operation in read only mode.");
  112. }
  113. private:
  114. friend class DB;
  115. };
  116. } // namespace ROCKSDB_NAMESPACE
  117. #endif // !ROCKSDB_LITE