31 #include <boost/optional.hpp> 34 #include "mongo/base/owned_pointer_vector.h" 35 #include "mongo/bson/ordering.h" 36 #include "mongo/bson/timestamp.h" 38 #include "mongo/db/index/multikey_paths.h" 39 #include "mongo/db/matcher/expression.h" 40 #include "mongo/db/record_id.h" 42 #include "mongo/platform/atomic_word.h" 43 #include "mongo/stdx/mutex.h" 47 class CollatorInterface;
48 class CollectionCatalogEntry;
49 class CollectionInfoCache;
51 class IndexAccessMethod;
52 class IndexDescriptor;
53 class MatchExpression;
54 class OperationContext;
62 OperationContext*
opCtx,
70 const std::string&
ns() const final {
104 const RecordId&
head(OperationContext* opCtx)
const final;
106 void setHead(OperationContext* opCtx, RecordId newHead)
final;
119 bool isMultikey(OperationContext* opCtx)
const final;
147 void setMultikey(OperationContext* opCtx,
const MultikeyPaths& multikeyPaths)
final;
150 bool isReady(OperationContext* opCtx)
const final;
169 class SetMultikeyChange;
const RecordId & head(OperationContext *opCtx) const final
Definition: index_catalog_entry_impl.cpp:159
std::string _ns
Definition: index_catalog_entry_impl.h:186
IndexAccessMethod * accessMethod() final
Definition: index_catalog_entry_impl.h:83
IndexCatalogEntry *const OperationContext *const const StringData CollectionCatalogEntry *const std::unique_ptr< IndexDescriptor > CollectionInfoCache *const infoCache
Definition: index_catalog_entry_impl.cpp:58
boost::optional< Timestamp > getMinimumVisibleSnapshot() final
If return value is not boost::none, reads with majority read concern using an older snapshot must tre...
Definition: index_catalog_entry_impl.h:160
MONGO_DISALLOW_COPYING(IndexCatalogEntryImpl)
boost::optional< Timestamp > _minVisibleSnapshot
Definition: index_catalog_entry_impl.h:234
bool isMultikey(OperationContext *opCtx) const final
Returns true if this index is multikey, and returns false otherwise.
Definition: index_catalog_entry_impl.cpp:169
bool _catalogIsReady(OperationContext *opCtx) const
Definition: index_catalog_entry_impl.cpp:344
const MatchExpression * getFilterExpression() const final
Definition: index_catalog_entry_impl.h:94
void setIsReady(bool newIsReady) final
Definition: index_catalog_entry_impl.cpp:216
Definition: index_catalog_entry.h:61
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
MultikeyPaths getMultikeyPaths(OperationContext *opCtx) const final
Returns the path components that cause this index to be multikey if this index supports path-level mu...
Definition: index_catalog_entry_impl.cpp:196
Definition: collection_catalog_entry.h:47
std::unique_ptr< IndexAccessMethod > _accessMethod
Definition: index_catalog_entry_impl.h:194
AtomicWord< bool > _isMultikey
Definition: index_catalog_entry_impl.h:214
bool _indexTracksPathLevelMultikeyInfo
Definition: index_catalog_entry_impl.h:210
Database *const this_
Definition: database_impl.cpp:82
Collection *const collection
Definition: collection_info_cache_impl.cpp:53
const IndexAccessMethod * accessMethod() const final
Definition: index_catalog_entry_impl.h:86
Definition: index_catalog_entry_impl.h:56
const Ordering & ordering() const final
Definition: index_catalog_entry_impl.h:90
IndexDescriptor * descriptor() final
Definition: index_catalog_entry_impl.h:76
void init(std::unique_ptr< IndexAccessMethod > accessMethod) final
Definition: index_catalog_entry_impl.cpp:154
std::unique_ptr< CollatorInterface > _collator
Definition: index_catalog_entry_impl.h:198
KVPrefix _catalogGetPrefix(OperationContext *opCtx) const
Definition: index_catalog_entry_impl.cpp:357
void setMultikey(OperationContext *opCtx, const MultikeyPaths &multikeyPaths) final
Sets this index to be multikey.
Definition: index_catalog_entry_impl.cpp:240
void setHead(OperationContext *opCtx, RecordId newHead) final
Definition: index_catalog_entry_impl.cpp:233
std::unique_ptr< IndexDescriptor > _descriptor
Definition: index_catalog_entry_impl.h:190
bool _catalogIsMultikey(OperationContext *opCtx, MultikeyPaths *multikeyPaths) const
Retrieves the multikey information associated with this index from '_collection',.
Definition: index_catalog_entry_impl.cpp:352
bool isReady(OperationContext *opCtx) const final
Definition: index_catalog_entry_impl.cpp:164
const std::string & ns() const final
Definition: index_catalog_entry_impl.h:70
MultikeyPaths _indexMultikeyPaths
Definition: index_catalog_entry_impl.h:227
RecordId _head
Definition: index_catalog_entry_impl.h:205
void setMinimumVisibleSnapshot(Timestamp name) final
Definition: index_catalog_entry_impl.h:164
Definition: index_catalog_entry_impl.cpp:220
Definition: index_catalog_entry.h:56
const CollatorInterface * getCollator() const final
Definition: index_catalog_entry_impl.h:98
~IndexCatalogEntryImpl() final
Definition: index_catalog_entry_impl.cpp:147
CollectionInfoCache * _infoCache
Definition: index_catalog_entry_impl.h:192
KVPrefix getPrefix() const final
Definition: index_catalog_entry_impl.h:152
stdx::mutex _indexMultikeyPathsMutex
Definition: index_catalog_entry_impl.h:219
const IndexDescriptor * descriptor() const final
Definition: index_catalog_entry_impl.h:79
HeadManager * headManager() const final
Definition: index_catalog_entry_impl.h:110
IndexCatalogEntryImpl(IndexCatalogEntry *this_, OperationContext *opCtx, StringData ns, CollectionCatalogEntry *collection, std::unique_ptr< IndexDescriptor > descriptor, CollectionInfoCache *infoCache)
Definition: index_catalog_entry_impl.cpp:90
Ordering _ordering
Definition: index_catalog_entry_impl.h:203
A KVPrefix may be prepended to the keys of entries in an underlying KV store.
Definition: kv_prefix.h:44
An abstraction for setting and getting data about the 'head' of an index.
Definition: head_manager.h:41
const KVPrefix _prefix
Definition: index_catalog_entry_impl.h:231
RecordId _catalogHead(OperationContext *opCtx) const
Definition: index_catalog_entry_impl.cpp:348
Database *const OperationContext *const const StringData name
Definition: database_impl.cpp:82
bool _isReady
Definition: index_catalog_entry_impl.h:204
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80
std::unique_ptr< MatchExpression > _filterExpression
Definition: index_catalog_entry_impl.h:199
this is for storing things that you want to cache about a single collection life cycle is managed for...
Definition: collection_info_cache.h:47
CollectionCatalogEntry * _collection
Definition: index_catalog_entry_impl.h:188
std::unique_ptr< HeadManager > _headManager
Definition: index_catalog_entry_impl.h:197