Storage Engine API
collection_catalog_entry.h
Go to the documentation of this file.
1 // collection_catalog_entry.h
2 
31 #pragma once
32 
33 #include "mongo/base/string_data.h"
35 #include "mongo/db/index/multikey_paths.h"
36 #include "mongo/db/namespace_string.h"
37 #include "mongo/db/record_id.h"
38 #include "mongo/db/server_options.h"
40 
41 namespace mongo {
42 
43 class Collection;
44 class IndexDescriptor;
45 class OperationContext;
46 
48 public:
49  CollectionCatalogEntry(StringData ns) : _ns(ns) {}
51 
52  const NamespaceString& ns() const {
53  return _ns;
54  }
55 
56  // ------- indexes ----------
57 
58  virtual CollectionOptions getCollectionOptions(OperationContext* opCtx) const = 0;
59 
60  virtual int getTotalIndexCount(OperationContext* opCtx) const = 0;
61 
62  virtual int getCompletedIndexCount(OperationContext* opCtx) const = 0;
63 
64  virtual int getMaxAllowedIndexes() const = 0;
65 
66  virtual void getAllIndexes(OperationContext* opCtx, std::vector<std::string>* names) const = 0;
67 
68  virtual void getReadyIndexes(OperationContext* opCtx,
69  std::vector<std::string>* names) const = 0;
70 
71  virtual void getAllUniqueIndexes(OperationContext* opCtx,
72  std::vector<std::string>* names) const {}
73 
74  virtual BSONObj getIndexSpec(OperationContext* opCtx, StringData idxName) const = 0;
75 
87  virtual bool isIndexMultikey(OperationContext* opCtx,
88  StringData indexName,
89  MultikeyPaths* multikeyPaths) const = 0;
90 
100  virtual bool setIndexIsMultikey(OperationContext* opCtx,
101  StringData indexName,
102  const MultikeyPaths& multikeyPaths) = 0;
103 
104  virtual RecordId getIndexHead(OperationContext* opCtx, StringData indexName) const = 0;
105 
106  virtual void setIndexHead(OperationContext* opCtx,
107  StringData indexName,
108  const RecordId& newHead) = 0;
109 
110  virtual bool isIndexReady(OperationContext* opCtx, StringData indexName) const = 0;
111 
112  virtual KVPrefix getIndexPrefix(OperationContext* opCtx, StringData indexName) const = 0;
113 
114  virtual Status removeIndex(OperationContext* opCtx, StringData indexName) = 0;
115 
116  virtual Status prepareForIndexBuild(OperationContext* opCtx,
117  const IndexDescriptor* spec,
118  bool isBackgroundSecondaryBuild) = 0;
119 
120  virtual void indexBuildSuccess(OperationContext* opCtx, StringData indexName) = 0;
121 
122  /* Updates the expireAfterSeconds field of the given index to the value in newExpireSecs.
123  * The specified index must already contain an expireAfterSeconds field, and the value in
124  * that field and newExpireSecs must both be numeric.
125  */
126  virtual void updateTTLSetting(OperationContext* opCtx,
127  StringData idxName,
128  long long newExpireSeconds) = 0;
129 
130  virtual void updateIndexMetadata(OperationContext* opCtx, const IndexDescriptor* desc) {}
131 
136  virtual void updateFlags(OperationContext* opCtx, int newValue) = 0;
137 
143  virtual void updateValidator(OperationContext* opCtx,
144  const BSONObj& validator,
145  StringData validationLevel,
146  StringData validationAction) = 0;
147 
151  virtual void setIsTemp(OperationContext* opCtx, bool isTemp) = 0;
152 
157  virtual void addUUID(OperationContext* opCtx, CollectionUUID uuid, Collection* coll) = 0;
158 
163  virtual bool isEqualToMetadataUUID(OperationContext* opCtx, OptionalCollectionUUID uuid) = 0;
164 
168  virtual void updateCappedSize(OperationContext* opCtx, long long size) = 0;
169 
170 private:
171  NamespaceString _ns;
172 };
173 }
virtual BSONObj getIndexSpec(OperationContext *opCtx, StringData idxName) const =0
virtual void addUUID(OperationContext *opCtx, CollectionUUID uuid, Collection *coll)=0
Assigns a new UUID to this collection.
virtual ~CollectionCatalogEntry()
Definition: collection_catalog_entry.h:50
virtual Status removeIndex(OperationContext *opCtx, StringData indexName)=0
Definition: collection_options.h:57
virtual void getAllIndexes(OperationContext *opCtx, std::vector< std::string > *names) const =0
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
virtual void getReadyIndexes(OperationContext *opCtx, std::vector< std::string > *names) const =0
virtual int getMaxAllowedIndexes() const =0
Definition: collection_catalog_entry.h:47
OperationContext Database StringData BSONObj CollectionOptions::ParseKind bool const BSONObj &idIndex Status
Definition: database_impl.cpp:956
virtual CollectionOptions getCollectionOptions(OperationContext *opCtx) const =0
virtual Status prepareForIndexBuild(OperationContext *opCtx, const IndexDescriptor *spec, bool isBackgroundSecondaryBuild)=0
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
NamespaceString _ns
Definition: collection_catalog_entry.h:171
virtual void updateIndexMetadata(OperationContext *opCtx, const IndexDescriptor *desc)
Definition: collection_catalog_entry.h:130
virtual void updateValidator(OperationContext *opCtx, const BSONObj &validator, StringData validationLevel, StringData validationAction)=0
Updates the validator for this collection.
virtual void updateTTLSetting(OperationContext *opCtx, StringData idxName, long long newExpireSeconds)=0
boost::optional< CollectionUUID > OptionalCollectionUUID
Definition: collection_options.h:55
Collection *const OperationContext *const const StringData OptionalCollectionUUID uuid
Definition: collection_impl.cpp:80
virtual bool isEqualToMetadataUUID(OperationContext *opCtx, OptionalCollectionUUID uuid)=0
Compare the UUID argument to the UUID obtained from the metadata.
virtual int getTotalIndexCount(OperationContext *opCtx) const =0
virtual void indexBuildSuccess(OperationContext *opCtx, StringData indexName)=0
virtual void updateCappedSize(OperationContext *opCtx, long long size)=0
Updates size of a capped Collection.
A KVPrefix may be prepended to the keys of entries in an underlying KV store.
Definition: kv_prefix.h:44
virtual KVPrefix getIndexPrefix(OperationContext *opCtx, StringData indexName) const =0
virtual RecordId getIndexHead(OperationContext *opCtx, StringData indexName) const =0
CollectionCatalogEntry(StringData ns)
Definition: collection_catalog_entry.h:49
virtual void setIsTemp(OperationContext *opCtx, bool isTemp)=0
Updates the &#39;temp&#39; setting for this collection.
virtual bool setIndexIsMultikey(OperationContext *opCtx, StringData indexName, const MultikeyPaths &multikeyPaths)=0
Sets the index identified by &#39;indexName&#39; to be multikey.
virtual int getCompletedIndexCount(OperationContext *opCtx) const =0
virtual void setIndexHead(OperationContext *opCtx, StringData indexName, const RecordId &newHead)=0
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80
virtual bool isIndexMultikey(OperationContext *opCtx, StringData indexName, MultikeyPaths *multikeyPaths) const =0
Returns true if the index identified by &#39;indexName&#39; is multikey, and returns false otherwise...
virtual void updateFlags(OperationContext *opCtx, int newValue)=0
Sets the flags field of CollectionOptions to newValue.
virtual void getAllUniqueIndexes(OperationContext *opCtx, std::vector< std::string > *names) const
Definition: collection_catalog_entry.h:71
OperationContext const IndexDescriptor * desc
Definition: index_catalog_impl.cpp:97
virtual bool isIndexReady(OperationContext *opCtx, StringData indexName) const =0
const NamespaceString & ns() const
Definition: collection_catalog_entry.h:52