Storage Engine API
kv_database_catalog_entry_base.h
Go to the documentation of this file.
1 
29 #pragma once
30 
31 #include <map>
32 #include <memory>
33 #include <string>
34 
36 
37 namespace mongo {
38 
39 class KVStorageEngine;
40 class KVCollectionCatalogEntry;
41 
43 public:
45  ~KVDatabaseCatalogEntryBase() override;
46 
47  bool exists() const override;
48  bool isEmpty() const override;
49  bool hasUserData() const override;
50 
51  int64_t sizeOnDisk(OperationContext* opCtx) const override;
52 
53  void appendExtraStats(OperationContext* opCtx,
54  BSONObjBuilder* out,
55  double scale) const override;
56 
57  bool isOlderThan24(OperationContext* opCtx) const override {
58  return false;
59  }
60  void markIndexSafe24AndUp(OperationContext* opCtx) override {}
61 
62  Status currentFilesCompatible(OperationContext* opCtx) const override;
63 
64  void getCollectionNamespaces(std::list<std::string>* out) const override;
65 
66  CollectionCatalogEntry* getCollectionCatalogEntry(StringData ns) const override;
67 
68  RecordStore* getRecordStore(StringData ns) const override;
69 
70  IndexAccessMethod* getIndex(OperationContext* opCtx,
72  IndexCatalogEntry* index) override = 0;
73 
74  Status createCollection(OperationContext* opCtx,
75  StringData ns,
77  bool allocateDefaultSpace) override;
78 
79  Status renameCollection(OperationContext* opCtx,
80  StringData fromNS,
81  StringData toNS,
82  bool stayTemp) override;
83 
84  Status dropCollection(OperationContext* opCtx, StringData ns) override;
85 
86  // --------------
87 
88  void initCollection(OperationContext* opCtx, const std::string& ns, bool forRepair);
89 
90  void initCollectionBeforeRepair(OperationContext* opCtx, const std::string& ns);
91  void reinitCollectionAfterRepair(OperationContext* opCtx, const std::string& ns);
92 
93 protected:
94  class AddCollectionChange;
96 
97  typedef std::map<std::string, KVCollectionCatalogEntry*> CollectionMap;
98 
99 
100  KVStorageEngine* const _engine; // not owned here
101  CollectionMap _collections;
102 };
103 } // namespace mongo
Status renameCollection(OperationContext *opCtx, StringData fromNS, StringData toNS, bool stayTemp) override
Definition: kv_database_catalog_entry_base.cpp:279
void markIndexSafe24AndUp(OperationContext *opCtx) override
Definition: kv_database_catalog_entry_base.h:60
void reinitCollectionAfterRepair(OperationContext *opCtx, const std::string &ns)
Definition: kv_database_catalog_entry_base.cpp:267
bool isEmpty() const override
Definition: kv_database_catalog_entry_base.cpp:132
KVEngine * engine
Definition: kv_engine_test_timestamps.cpp:205
void initCollection(OperationContext *opCtx, const std::string &ns, bool forRepair)
Definition: kv_database_catalog_entry_base.cpp:244
Collection *const const NamespaceString & ns
Definition: collection_info_cache_impl.cpp:53
IndexAccessMethod * getIndex(OperationContext *opCtx, const CollectionCatalogEntry *collection, IndexCatalogEntry *index) override=0
Definition: collection_options.h:57
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
Definition: kv_database_catalog_entry_base.h:42
RecordStore * getRecordStore(StringData ns) const override
Definition: kv_database_catalog_entry_base.cpp:186
Definition: collection_catalog_entry.h:47
Collection *const collection
Definition: collection_info_cache_impl.cpp:53
OperationContext Database StringData BSONObj CollectionOptions::ParseKind bool const BSONObj &idIndex Status
Definition: database_impl.cpp:956
CollectionCatalogEntry * getCollectionCatalogEntry(StringData ns) const override
Definition: kv_database_catalog_entry_base.cpp:177
void appendExtraStats(OperationContext *opCtx, BSONObjBuilder *out, double scale) const override
Definition: kv_database_catalog_entry_base.cpp:162
KVDatabaseCatalogEntryBase(StringData db, KVStorageEngine *engine)
Definition: kv_database_catalog_entry_base.cpp:118
Definition: kv_storage_engine.h:69
Definition: kv_database_catalog_entry_base.cpp:48
KVStorageEngine *const _engine
Definition: kv_database_catalog_entry_base.h:100
int64_t sizeOnDisk(OperationContext *opCtx) const override
Definition: kv_database_catalog_entry_base.cpp:140
Definition: index_catalog_entry.h:56
Definition: kv_database_catalog_entry_base.cpp:82
void initCollectionBeforeRepair(OperationContext *opCtx, const std::string &ns)
An abstraction used for storing documents in a collection or entries in an index. ...
Definition: record_store.h:282
void getCollectionNamespaces(std::list< std::string > *out) const override
Definition: kv_database_catalog_entry_base.cpp:171
Definition: database_catalog_entry.h:50
OperationContext Database * db
Definition: database_impl.cpp:949
Status currentFilesCompatible(OperationContext *opCtx) const override
Returns whethers the data files are compatible with the current code:
Definition: kv_database_catalog_entry_base.cpp:166
OperationContext Database StringData BSONObj options
Definition: database_impl.cpp:949
bool isOlderThan24(OperationContext *opCtx) const override
Definition: kv_database_catalog_entry_base.h:57
CollectionMap _collections
Definition: kv_database_catalog_entry_base.h:101
~KVDatabaseCatalogEntryBase() override
Definition: kv_database_catalog_entry_base.cpp:121
bool exists() const override
Definition: kv_database_catalog_entry_base.cpp:128
Status dropCollection(OperationContext *opCtx, StringData ns) override
Definition: kv_database_catalog_entry_base.cpp:338
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80
Status createCollection(OperationContext *opCtx, StringData ns, const CollectionOptions &options, bool allocateDefaultSpace) override
Definition: kv_database_catalog_entry_base.cpp:195
bool hasUserData() const override
Definition: kv_database_catalog_entry_base.cpp:136
std::map< std::string, KVCollectionCatalogEntry * > CollectionMap
Definition: kv_database_catalog_entry_base.h:95