![]() |
Storage Engine API
|
#include <index_catalog_entry_impl.h>
Classes | |
class | SetHeadChange |
Public Member Functions | |
IndexCatalogEntryImpl (IndexCatalogEntry *this_, OperationContext *opCtx, StringData ns, CollectionCatalogEntry *collection, std::unique_ptr< IndexDescriptor > descriptor, CollectionInfoCache *infoCache) | |
~IndexCatalogEntryImpl () final | |
const std::string & | ns () const final |
void | init (std::unique_ptr< IndexAccessMethod > accessMethod) final |
IndexDescriptor * | descriptor () final |
const IndexDescriptor * | descriptor () const final |
IndexAccessMethod * | accessMethod () final |
const IndexAccessMethod * | accessMethod () const final |
const Ordering & | ordering () const final |
const MatchExpression * | getFilterExpression () const final |
const CollatorInterface * | getCollator () const final |
const RecordId & | head (OperationContext *opCtx) const final |
More... | |
void | setHead (OperationContext *opCtx, RecordId newHead) final |
void | setIsReady (bool newIsReady) final |
HeadManager * | headManager () const final |
bool | isMultikey (OperationContext *opCtx) const final |
Returns true if this index is multikey, and returns false otherwise. More... | |
MultikeyPaths | getMultikeyPaths (OperationContext *opCtx) const final |
Returns the path components that cause this index to be multikey if this index supports path-level multikey tracking, and returns an empty vector if path-level multikey tracking isn't supported. More... | |
void | setMultikey (OperationContext *opCtx, const MultikeyPaths &multikeyPaths) final |
Sets this index to be multikey. More... | |
bool | isReady (OperationContext *opCtx) const final |
KVPrefix | getPrefix () const final |
boost::optional< Timestamp > | getMinimumVisibleSnapshot () final |
If return value is not boost::none, reads with majority read concern using an older snapshot must treat this index as unfinished. More... | |
void | setMinimumVisibleSnapshot (Timestamp name) final |
![]() | |
virtual | ~Impl ()=0 |
Private Member Functions | |
MONGO_DISALLOW_COPYING (IndexCatalogEntryImpl) | |
bool | _catalogIsReady (OperationContext *opCtx) const |
RecordId | _catalogHead (OperationContext *opCtx) const |
bool | _catalogIsMultikey (OperationContext *opCtx, MultikeyPaths *multikeyPaths) const |
Retrieves the multikey information associated with this index from '_collection',. More... | |
KVPrefix | _catalogGetPrefix (OperationContext *opCtx) const |
Private Attributes | |
std::string | _ns |
CollectionCatalogEntry * | _collection |
std::unique_ptr< IndexDescriptor > | _descriptor |
CollectionInfoCache * | _infoCache |
std::unique_ptr< IndexAccessMethod > | _accessMethod |
std::unique_ptr< HeadManager > | _headManager |
std::unique_ptr< CollatorInterface > | _collator |
std::unique_ptr< MatchExpression > | _filterExpression |
Ordering | _ordering |
bool | _isReady |
RecordId | _head |
bool | _indexTracksPathLevelMultikeyInfo = false |
AtomicWord< bool > | _isMultikey |
stdx::mutex | _indexMultikeyPathsMutex |
MultikeyPaths | _indexMultikeyPaths |
const KVPrefix | _prefix |
boost::optional< Timestamp > | _minVisibleSnapshot |
|
explicit |
|
final |
|
private |
|
private |
|
private |
Retrieves the multikey information associated with this index from '_collection',.
See CollectionCatalogEntry::isIndexMultikey() for more details.
|
private |
|
inlinefinalvirtual |
Implements mongo::IndexCatalogEntry::Impl.
|
inlinefinalvirtual |
Implements mongo::IndexCatalogEntry::Impl.
|
inlinefinalvirtual |
Implements mongo::IndexCatalogEntry::Impl.
|
inlinefinalvirtual |
Implements mongo::IndexCatalogEntry::Impl.
|
inlinefinalvirtual |
Implements mongo::IndexCatalogEntry::Impl.
|
inlinefinalvirtual |
Implements mongo::IndexCatalogEntry::Impl.
|
inlinefinalvirtual |
If return value is not boost::none, reads with majority read concern using an older snapshot must treat this index as unfinished.
Implements mongo::IndexCatalogEntry::Impl.
|
finalvirtual |
Returns the path components that cause this index to be multikey if this index supports path-level multikey tracking, and returns an empty vector if path-level multikey tracking isn't supported.
If this index supports path-level multikey tracking but isn't multikey, then this function returns a vector with size equal to the number of elements in the index key pattern where each element in the vector is an empty set.
Implements mongo::IndexCatalogEntry::Impl.
|
inlinefinalvirtual |
Implements mongo::IndexCatalogEntry::Impl.
|
finalvirtual |
Implements mongo::IndexCatalogEntry::Impl.
|
inlinefinalvirtual |
Implements mongo::IndexCatalogEntry::Impl.
|
finalvirtual |
Implements mongo::IndexCatalogEntry::Impl.
|
finalvirtual |
Returns true if this index is multikey, and returns false otherwise.
Implements mongo::IndexCatalogEntry::Impl.
|
finalvirtual |
Implements mongo::IndexCatalogEntry::Impl.
|
private |
|
inlinefinalvirtual |
Implements mongo::IndexCatalogEntry::Impl.
|
inlinefinalvirtual |
Implements mongo::IndexCatalogEntry::Impl.
|
finalvirtual |
Implements mongo::IndexCatalogEntry::Impl.
|
finalvirtual |
Implements mongo::IndexCatalogEntry::Impl.
|
inlinefinalvirtual |
Implements mongo::IndexCatalogEntry::Impl.
|
finalvirtual |
Sets this index to be multikey.
Information regarding which newly detected path components cause this index to be multikey can also be specified.
If this index doesn't support path-level multikey tracking, then 'multikeyPaths' is ignored.
If this index supports path-level multikey tracking, then 'multikeyPaths' must be a vector with size equal to the number of elements in the index key pattern. Additionally, at least one path component of the indexed fields must cause this index to be multikey.
If isTrackingMultikeyPathInfo() is set on the OperationContext's MultikeyPathTracker, then after we confirm that we actually need to set the index as multikey, we will save the namespace, index name, and multikey paths on the OperationContext rather than set the index as multikey here.
Implements mongo::IndexCatalogEntry::Impl.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
mutableprivate |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |