36 #include "mongo/base/string_data.h" 37 #include "mongo/bson/bsonobj.h" 39 #include "mongo/db/namespace_string.h" 41 #include "mongo/db/views/view.h" 42 #include "mongo/db/views/view_catalog.h" 43 #include "mongo/util/mongoutils/str.h" 44 #include "mongo/util/string_map.h" 49 class DatabaseCatalogEntry;
51 class NamespaceDetails;
52 class OperationContext;
101 auto oldPosition = *
this;
107 CollectionMap::const_iterator
_it;
111 OperationContext*
opCtx,
118 void init(OperationContext*)
final;
129 void close(OperationContext*
opCtx,
const std::string& reason)
final;
131 const std::string&
name() const final {
152 void setDropPending(OperationContext* opCtx,
bool dropPending)
final;
156 void getStats(OperationContext* opCtx, BSONObjBuilder* output,
double scale = 1)
final;
169 repl::OpTime dropOpTime)
final;
171 const NamespaceString& fullns,
172 repl::OpTime dropOpTime)
final;
174 Status dropView(OperationContext* opCtx, StringData fullns)
final;
180 const BSONObj& idIndex = BSONObj())
final;
206 bool stayTemp)
final;
228 StringData collectionNameModel)
final;
251 const NamespaceString& nss,
261 const std::string& reason,
262 bool collectionGoingAway);
272 const NamespaceString& fullns,
278 const std::string
_name;
static Status validateDBName(StringData dbname)
Definition: database_impl.cpp:177
const DatabaseCatalogEntry * getDatabaseCatalogEntry() const final
Definition: database_impl.cpp:850
Status dropCollection(OperationContext *opCtx, StringData fullns, repl::OpTime dropOpTime) final
dropCollection() will refuse to drop system collections.
Definition: database_impl.cpp:439
Status createView(OperationContext *opCtx, StringData viewName, const CollectionOptions &options) final
Definition: database_impl.cpp:746
int getProfilingLevel() const final
Definition: database_impl.h:145
const CollectionMap & collections() const final
Definition: database_impl.h:233
bool operator!=(const iterator &other)
Definition: database_impl.h:91
ptrdiff_t difference_type
Definition: database_impl.h:74
void getStats(OperationContext *opCtx, BSONObjBuilder *output, double scale=1) final
Definition: database_impl.cpp:366
ViewCatalog _views
Definition: database_impl.h:302
CollectionMap _collections
Definition: database_impl.h:299
Collection *const const NamespaceString & ns
Definition: collection_info_cache_impl.cpp:53
int _profile
Definition: database_impl.h:286
Definition: database.h:61
Definition: collection_options.h:57
Database *const OperationContext *const const StringData DatabaseCatalogEntry *const dbEntry
Definition: database_impl.cpp:82
std::forward_iterator_tag iterator_category
Definition: database_impl.h:70
void clearTmpCollections(OperationContext *opCtx) final
Definition: database_impl.cpp:289
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
Database *const this_
Definition: database_impl.cpp:82
Collection *const collection
Definition: collection_info_cache_impl.cpp:53
const std::string & name() const final
Definition: database_impl.h:131
OperationContext Database StringData BSONObj CollectionOptions::ParseKind bool const BSONObj &idIndex Status
Definition: database_impl.cpp:956
pointer operator->() const
Definition: database_impl.h:83
void dropAllDatabasesExceptLocalImpl(OperationContext *opCtx)
iterator(CollectionMap::const_iterator it)
Definition: database_impl.h:77
Represents a logical database containing Collections.
Definition: database_impl.h:61
iterator operator++(int)
Definition: database_impl.h:100
iterator end() const
Definition: database_impl.h:124
Iterating over a Database yields Collection* pointers.
Definition: database_impl.h:68
void _checkCanCreateCollection(OperationContext *opCtx, const NamespaceString &nss, const CollectionOptions &options)
Throws if there is a reason 'ns' cannot be created as a user collection.
Definition: database_impl.cpp:717
Collection * getOrCreateCollection(OperationContext *opCtx, const NamespaceString &nss) final
Definition: database_impl.cpp:707
void close(OperationContext *opCtx, const std::string &reason) final
Definition: database_impl.cpp:165
this is NOT safe through a yield right now.
Definition: collection.h:160
const NamespaceString _indexesName
Definition: database_impl.h:283
const NamespaceString & getSystemIndexesName() const final
Definition: database_impl.h:219
Collection * _getOrCreateCollectionInstance(OperationContext *opCtx, const NamespaceString &nss)
Gets or creates collection instance from existing metadata, Returns NULL if invalid.
Definition: database_impl.cpp:210
Definition: namespace_details.h:47
const std::string _viewsName
Definition: database_impl.h:284
DurableViewCatalogImpl _durableViews
Definition: database_impl.h:301
how many: 1 per Collection.
Definition: index_catalog.h:62
bool isDropPending(OperationContext *opCtx) const final
Definition: database_impl.cpp:361
const std::string _profileName
Definition: database_impl.h:282
IndexSet::const_iterator it
Definition: ephemeral_for_test_btree_impl.cpp:458
Database * _this
Definition: database_impl.h:303
iterator & operator++()
Definition: database_impl.h:95
Definition: index_key_validate.h:40
Status dropView(OperationContext *opCtx, StringData fullns) final
Definition: database_impl.cpp:433
const char * getProfilingNS() const final
Definition: database_impl.h:148
Definition: database_impl.cpp:141
Definition: database_impl.cpp:109
CollectionMap & collections() final
Definition: database_impl.h:230
const std::string _name
Definition: database_impl.h:276
void init(OperationContext *) final
Definition: database_impl.cpp:256
void setDropPending(OperationContext *opCtx, bool dropPending) final
Definition: database_impl.cpp:348
iterator begin() const
Definition: database_impl.h:120
Status dropCollectionEvenIfSystem(OperationContext *opCtx, const NamespaceString &fullns, repl::OpTime dropOpTime) final
Definition: database_impl.cpp:468
~DatabaseImpl()
Definition: database_impl.cpp:160
ViewCatalog * getViewCatalog() final
Get the view catalog, which holds the definition for all views created on this database.
Definition: database_impl.h:197
const std::string & getSystemViewsName() const final
Definition: database_impl.h:223
Definition: database_catalog_entry.h:50
Collection * getCollection(OperationContext *opCtx, StringData ns) const final
Definition: database_impl.cpp:643
Represents a logical database containing Collections.
Definition: database.h:57
DatabaseImpl(Database *this_, OperationContext *opCtx, StringData name, DatabaseCatalogEntry *dbEntry)
Definition: database_impl.cpp:243
OperationContext Database * db
Definition: database_impl.cpp:949
std::unique_ptr< PseudoRandom > _uniqueCollectionNamespacePseudoRandom
Definition: database_impl.h:297
OperationContext Database StringData BSONObj options
Definition: database_impl.cpp:949
void _clearCollectionCache(OperationContext *opCtx, StringData fullns, const std::string &reason, bool collectionGoingAway)
Deregisters and invalidates all cursors on collection 'fullns'.
Definition: database_impl.cpp:626
DatabaseCatalogEntry * _dbEntry
Definition: database_impl.h:280
CollectionMap::const_iterator _it
Definition: database_impl.h:107
static void dropDatabase(OperationContext *opCtx, Database *db)
Physically drops the specified opened database and removes it from the server's metadata.
Definition: database_impl.cpp:854
bool _dropPending
Definition: database_impl.h:291
StringMap< Collection * > CollectionMap
Definition: database_impl.h:63
OperationContext Database StringData BSONObj CollectionOptions::ParseKind bool createDefaultIndexes
Definition: database_impl.cpp:949
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80
Collection * createCollection(OperationContext *opCtx, StringData ns, const CollectionOptions &options=CollectionOptions(), bool createDefaultIndexes=true, const BSONObj &idIndex=BSONObj()) final
Definition: database_impl.cpp:764
reference operator*() const
Definition: database_impl.h:79
bool operator==(const iterator &other)
Definition: database_impl.h:87
StatusWith< NamespaceString > makeUniqueCollectionNamespace(OperationContext *opCtx, StringData collectionNameModel) final
Definition: database_impl.cpp:882
Status _finishDropCollection(OperationContext *opCtx, const NamespaceString &fullns, Collection *collection)
Completes a collection drop by removing all the indexes and removing the collection itself from the s...
Definition: database_impl.cpp:605
Status setProfilingLevel(OperationContext *opCtx, int newLevel) final
Sets a new profiling level for the database and returns the outcome.
Definition: database_impl.cpp:323
Status renameCollection(OperationContext *opCtx, StringData fromNS, StringData toNS, bool stayTemp) final
Definition: database_impl.cpp:664