Storage Engine API
kv_collection_catalog_entry.h
Go to the documentation of this file.
1 // kv_collection_catalog_entry.h
2 
31 #pragma once
32 
33 #include <memory>
34 
36 #include "mongo/db/server_options.h"
39 
40 namespace mongo {
41 
42 class KVCatalog;
43 class KVEngine;
44 
46 public:
48  KVCatalog* catalog,
49  StringData ns,
50  StringData ident,
51  std::unique_ptr<RecordStore> rs);
52 
54 
55  int getMaxAllowedIndexes() const final {
56  return 64;
57  };
58 
59  bool setIndexIsMultikey(OperationContext* opCtx,
60  StringData indexName,
61  const MultikeyPaths& multikeyPaths) final;
62 
63  void setIndexHead(OperationContext* opCtx, StringData indexName, const RecordId& newHead) final;
64 
65  Status removeIndex(OperationContext* opCtx, StringData indexName) final;
66 
67  Status prepareForIndexBuild(OperationContext* opCtx,
68  const IndexDescriptor* spec,
69  bool isBackgroundSecondaryBuild) final;
70 
71  void indexBuildSuccess(OperationContext* opCtx, StringData indexName) final;
72 
73  void updateTTLSetting(OperationContext* opCtx,
74  StringData idxName,
75  long long newExpireSeconds) final;
76 
77  void updateFlags(OperationContext* opCtx, int newValue) final;
78 
79  void updateIndexMetadata(OperationContext* opCtx, const IndexDescriptor* desc) final;
80 
81  void updateValidator(OperationContext* opCtx,
82  const BSONObj& validator,
83  StringData validationLevel,
84  StringData validationAction) final;
85 
86  void setIsTemp(OperationContext* opCtx, bool isTemp);
87 
88  void updateCappedSize(OperationContext*, long long int) final;
89 
90  void addUUID(OperationContext* opCtx, CollectionUUID uuid, Collection* coll) final;
91 
92  bool isEqualToMetadataUUID(OperationContext* opCtx, OptionalCollectionUUID uuid) final;
93 
95  return _recordStore.get();
96  }
97  const RecordStore* getRecordStore() const {
98  return _recordStore.get();
99  }
100 
101 protected:
102  MetaData _getMetaData(OperationContext* opCtx) const final;
103 
104 private:
105  class AddIndexChange;
107 
108  KVEngine* _engine; // not owned
109  KVCatalog* _catalog; // not owned
110  std::string _ident;
111  std::unique_ptr<RecordStore> _recordStore; // owned
112 };
113 }
std::unique_ptr< RecordStore > _recordStore
Definition: kv_collection_catalog_entry.h:111
Status prepareForIndexBuild(OperationContext *opCtx, const IndexDescriptor *spec, bool isBackgroundSecondaryBuild) final
Definition: kv_collection_catalog_entry.cpp:180
void setIndexHead(OperationContext *opCtx, StringData indexName, const RecordId &newHead) final
Definition: kv_collection_catalog_entry.cpp:154
Status removeIndex(OperationContext *opCtx, StringData indexName) final
Definition: kv_collection_catalog_entry.cpp:164
Definition: kv_engine.h:53
const RecordStore * getRecordStore() const
Definition: kv_collection_catalog_entry.h:97
KVEngine * engine
Definition: kv_engine_test_timestamps.cpp:205
~KVCollectionCatalogEntry() final
Definition: kv_collection_catalog_entry.cpp:98
std::string _ident
Definition: kv_collection_catalog_entry.h:110
KVEngine * _engine
Definition: kv_collection_catalog_entry.h:106
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
OperationContext Database StringData BSONObj CollectionOptions::ParseKind bool const BSONObj &idIndex Status
Definition: database_impl.cpp:956
void indexBuildSuccess(OperationContext *opCtx, StringData indexName) final
Definition: kv_collection_catalog_entry.cpp:218
void setIsTemp(OperationContext *opCtx, bool isTemp)
Updates the &#39;temp&#39; setting for this collection.
Definition: kv_collection_catalog_entry.cpp:281
UUID CollectionUUID
A CollectionUUID is a 128-bit unique identifier, per RFC 4122, v4.
Definition: collection_options.h:53
this is NOT safe through a yield right now.
Definition: collection.h:160
bool setIndexIsMultikey(OperationContext *opCtx, StringData indexName, const MultikeyPaths &multikeyPaths) final
Sets the index identified by &#39;indexName&#39; to be multikey.
Definition: kv_collection_catalog_entry.cpp:100
std::unique_ptr< RecordStore > rs
Definition: kv_engine_test_timestamps.cpp:207
Definition: kv_collection_catalog_entry.cpp:53
Definition: kv_catalog.h:49
boost::optional< CollectionUUID > OptionalCollectionUUID
Definition: collection_options.h:55
bool isEqualToMetadataUUID(OperationContext *opCtx, OptionalCollectionUUID uuid) final
Compare the UUID argument to the UUID obtained from the metadata.
Definition: kv_collection_catalog_entry.cpp:257
int getMaxAllowedIndexes() const final
Definition: kv_collection_catalog_entry.h:55
RecordStore * getRecordStore()
Definition: kv_collection_catalog_entry.h:94
Collection *const OperationContext *const const StringData OptionalCollectionUUID uuid
Definition: collection_impl.cpp:80
void updateValidator(OperationContext *opCtx, const BSONObj &validator, StringData validationLevel, StringData validationAction) final
Updates the validator for this collection.
Definition: kv_collection_catalog_entry.cpp:270
An abstraction used for storing documents in a collection or entries in an index. ...
Definition: record_store.h:282
void addUUID(OperationContext *opCtx, CollectionUUID uuid, Collection *coll) final
Assigns a new UUID to this collection.
Definition: kv_collection_catalog_entry.cpp:242
void updateTTLSetting(OperationContext *opCtx, StringData idxName, long long newExpireSeconds) final
Definition: kv_collection_catalog_entry.cpp:226
void updateFlags(OperationContext *opCtx, int newValue) final
Sets the flags field of CollectionOptions to newValue.
Definition: kv_collection_catalog_entry.cpp:263
Definition: kv_collection_catalog_entry.h:45
void updateCappedSize(OperationContext *, long long int) final
Updates size of a capped Collection.
Definition: kv_collection_catalog_entry.cpp:287
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80
Definition: bson_collection_catalog_entry.h:110
This is a helper class for any storage engine that wants to store catalog information as BSON...
Definition: bson_collection_catalog_entry.h:46
MetaData _getMetaData(OperationContext *opCtx) const final
Definition: kv_collection_catalog_entry.cpp:293
void updateIndexMetadata(OperationContext *opCtx, const IndexDescriptor *desc) final
Definition: kv_collection_catalog_entry.cpp:236
Definition: kv_collection_catalog_entry.cpp:69
OperationContext const IndexDescriptor * desc
Definition: index_catalog_impl.cpp:97
KVCollectionCatalogEntry(KVEngine *engine, KVCatalog *catalog, StringData ns, StringData ident, std::unique_ptr< RecordStore > rs)
Definition: kv_collection_catalog_entry.cpp:87
KVCatalog * _catalog
Definition: kv_collection_catalog_entry.h:109
const NamespaceString & ns() const
Definition: collection_catalog_entry.h:52