summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage/bson_collection_catalog_entry.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/storage/bson_collection_catalog_entry.cpp')
-rw-r--r--src/mongo/db/storage/bson_collection_catalog_entry.cpp248
1 files changed, 122 insertions, 126 deletions
diff --git a/src/mongo/db/storage/bson_collection_catalog_entry.cpp b/src/mongo/db/storage/bson_collection_catalog_entry.cpp
index e1c7e527d69..976636b0bc6 100644
--- a/src/mongo/db/storage/bson_collection_catalog_entry.cpp
+++ b/src/mongo/db/storage/bson_collection_catalog_entry.cpp
@@ -32,169 +32,165 @@
namespace mongo {
- BSONCollectionCatalogEntry::BSONCollectionCatalogEntry( StringData ns )
- : CollectionCatalogEntry( ns ) {
- }
+BSONCollectionCatalogEntry::BSONCollectionCatalogEntry(StringData ns)
+ : CollectionCatalogEntry(ns) {}
- CollectionOptions BSONCollectionCatalogEntry::getCollectionOptions( OperationContext* txn ) const {
- MetaData md = _getMetaData( txn );
- return md.options;
- }
+CollectionOptions BSONCollectionCatalogEntry::getCollectionOptions(OperationContext* txn) const {
+ MetaData md = _getMetaData(txn);
+ return md.options;
+}
- int BSONCollectionCatalogEntry::getTotalIndexCount( OperationContext* txn ) const {
- MetaData md = _getMetaData( txn );
+int BSONCollectionCatalogEntry::getTotalIndexCount(OperationContext* txn) const {
+ MetaData md = _getMetaData(txn);
- return static_cast<int>( md.indexes.size() );
- }
+ return static_cast<int>(md.indexes.size());
+}
- int BSONCollectionCatalogEntry::getCompletedIndexCount( OperationContext* txn ) const {
- MetaData md = _getMetaData( txn );
+int BSONCollectionCatalogEntry::getCompletedIndexCount(OperationContext* txn) const {
+ MetaData md = _getMetaData(txn);
- int num = 0;
- for ( unsigned i = 0; i < md.indexes.size(); i++ ) {
- if ( md.indexes[i].ready )
- num++;
- }
- return num;
+ int num = 0;
+ for (unsigned i = 0; i < md.indexes.size(); i++) {
+ if (md.indexes[i].ready)
+ num++;
}
+ return num;
+}
- BSONObj BSONCollectionCatalogEntry::getIndexSpec( OperationContext* txn,
- StringData indexName ) const {
- MetaData md = _getMetaData( txn );
+BSONObj BSONCollectionCatalogEntry::getIndexSpec(OperationContext* txn,
+ StringData indexName) const {
+ MetaData md = _getMetaData(txn);
- int offset = md.findIndexOffset( indexName );
- invariant( offset >= 0 );
- return md.indexes[offset].spec.getOwned();
- }
+ int offset = md.findIndexOffset(indexName);
+ invariant(offset >= 0);
+ return md.indexes[offset].spec.getOwned();
+}
- void BSONCollectionCatalogEntry::getAllIndexes( OperationContext* txn,
- std::vector<std::string>* names ) const {
- MetaData md = _getMetaData( txn );
+void BSONCollectionCatalogEntry::getAllIndexes(OperationContext* txn,
+ std::vector<std::string>* names) const {
+ MetaData md = _getMetaData(txn);
- for ( unsigned i = 0; i < md.indexes.size(); i++ ) {
- names->push_back( md.indexes[i].spec["name"].String() );
- }
+ for (unsigned i = 0; i < md.indexes.size(); i++) {
+ names->push_back(md.indexes[i].spec["name"].String());
}
+}
- bool BSONCollectionCatalogEntry::isIndexMultikey( OperationContext* txn,
- StringData indexName) const {
- MetaData md = _getMetaData( txn );
+bool BSONCollectionCatalogEntry::isIndexMultikey(OperationContext* txn,
+ StringData indexName) const {
+ MetaData md = _getMetaData(txn);
- int offset = md.findIndexOffset( indexName );
- invariant( offset >= 0 );
- return md.indexes[offset].multikey;
- }
+ int offset = md.findIndexOffset(indexName);
+ invariant(offset >= 0);
+ return md.indexes[offset].multikey;
+}
- RecordId BSONCollectionCatalogEntry::getIndexHead( OperationContext* txn,
- StringData indexName ) const {
- MetaData md = _getMetaData( txn );
+RecordId BSONCollectionCatalogEntry::getIndexHead(OperationContext* txn,
+ StringData indexName) const {
+ MetaData md = _getMetaData(txn);
- int offset = md.findIndexOffset( indexName );
- invariant( offset >= 0 );
- return md.indexes[offset].head;
- }
+ int offset = md.findIndexOffset(indexName);
+ invariant(offset >= 0);
+ return md.indexes[offset].head;
+}
- bool BSONCollectionCatalogEntry::isIndexReady( OperationContext* txn,
- StringData indexName ) const {
- MetaData md = _getMetaData( txn );
+bool BSONCollectionCatalogEntry::isIndexReady(OperationContext* txn, StringData indexName) const {
+ MetaData md = _getMetaData(txn);
- int offset = md.findIndexOffset( indexName );
- invariant( offset >= 0 );
- return md.indexes[offset].ready;
- }
+ int offset = md.findIndexOffset(indexName);
+ invariant(offset >= 0);
+ return md.indexes[offset].ready;
+}
- // --------------------------
+// --------------------------
- void BSONCollectionCatalogEntry::IndexMetaData::updateTTLSetting( long long newExpireSeconds ) {
- BSONObjBuilder b;
- for ( BSONObjIterator bi( spec ); bi.more(); ) {
- BSONElement e = bi.next();
- if ( e.fieldNameStringData() == "expireAfterSeconds" ) {
- continue;
- }
- b.append( e );
+void BSONCollectionCatalogEntry::IndexMetaData::updateTTLSetting(long long newExpireSeconds) {
+ BSONObjBuilder b;
+ for (BSONObjIterator bi(spec); bi.more();) {
+ BSONElement e = bi.next();
+ if (e.fieldNameStringData() == "expireAfterSeconds") {
+ continue;
}
-
- b.append( "expireAfterSeconds", newExpireSeconds );
- spec = b.obj();
+ b.append(e);
}
- // --------------------------
+ b.append("expireAfterSeconds", newExpireSeconds);
+ spec = b.obj();
+}
- int BSONCollectionCatalogEntry::MetaData::findIndexOffset( StringData name ) const {
- for ( unsigned i = 0; i < indexes.size(); i++ )
- if ( indexes[i].name() == name )
- return i;
- return -1;
- }
+// --------------------------
- bool BSONCollectionCatalogEntry::MetaData::eraseIndex( StringData name ) {
- int indexOffset = findIndexOffset( name );
+int BSONCollectionCatalogEntry::MetaData::findIndexOffset(StringData name) const {
+ for (unsigned i = 0; i < indexes.size(); i++)
+ if (indexes[i].name() == name)
+ return i;
+ return -1;
+}
- if ( indexOffset < 0 ) {
- return false;
- }
+bool BSONCollectionCatalogEntry::MetaData::eraseIndex(StringData name) {
+ int indexOffset = findIndexOffset(name);
- indexes.erase( indexes.begin() + indexOffset );
- return true;
+ if (indexOffset < 0) {
+ return false;
}
- void BSONCollectionCatalogEntry::MetaData::rename( StringData toNS ) {
- ns = toNS.toString();
- for ( size_t i = 0; i < indexes.size(); i++ ) {
- BSONObj spec = indexes[i].spec;
- BSONObjBuilder b;
- b.append( "ns", toNS );
- b.appendElementsUnique( spec );
- indexes[i].spec = b.obj();
- }
- }
+ indexes.erase(indexes.begin() + indexOffset);
+ return true;
+}
- BSONObj BSONCollectionCatalogEntry::MetaData::toBSON() const {
+void BSONCollectionCatalogEntry::MetaData::rename(StringData toNS) {
+ ns = toNS.toString();
+ for (size_t i = 0; i < indexes.size(); i++) {
+ BSONObj spec = indexes[i].spec;
BSONObjBuilder b;
- b.append( "ns", ns );
- b.append( "options", options.toBSON() );
- {
- BSONArrayBuilder arr( b.subarrayStart( "indexes" ) );
- for ( unsigned i = 0; i < indexes.size(); i++ ) {
- BSONObjBuilder sub( arr.subobjStart() );
- sub.append( "spec", indexes[i].spec );
- sub.appendBool( "ready", indexes[i].ready );
- sub.appendBool( "multikey", indexes[i].multikey );
- sub.append( "head", static_cast<long long>(indexes[i].head.repr()) );
- sub.done();
- }
- arr.done();
+ b.append("ns", toNS);
+ b.appendElementsUnique(spec);
+ indexes[i].spec = b.obj();
+ }
+}
+
+BSONObj BSONCollectionCatalogEntry::MetaData::toBSON() const {
+ BSONObjBuilder b;
+ b.append("ns", ns);
+ b.append("options", options.toBSON());
+ {
+ BSONArrayBuilder arr(b.subarrayStart("indexes"));
+ for (unsigned i = 0; i < indexes.size(); i++) {
+ BSONObjBuilder sub(arr.subobjStart());
+ sub.append("spec", indexes[i].spec);
+ sub.appendBool("ready", indexes[i].ready);
+ sub.appendBool("multikey", indexes[i].multikey);
+ sub.append("head", static_cast<long long>(indexes[i].head.repr()));
+ sub.done();
}
- return b.obj();
+ arr.done();
}
+ return b.obj();
+}
- void BSONCollectionCatalogEntry::MetaData::parse( const BSONObj& obj ) {
- ns = obj["ns"].valuestrsafe();
+void BSONCollectionCatalogEntry::MetaData::parse(const BSONObj& obj) {
+ ns = obj["ns"].valuestrsafe();
- if ( obj["options"].isABSONObj() ) {
- options.parse( obj["options"].Obj() );
- }
+ if (obj["options"].isABSONObj()) {
+ options.parse(obj["options"].Obj());
+ }
- BSONElement e = obj["indexes"];
- if ( e.isABSONObj() ) {
- std::vector<BSONElement> entries = e.Array();
- for ( unsigned i = 0; i < entries.size(); i++ ) {
- BSONObj idx = entries[i].Obj();
- IndexMetaData imd;
- imd.spec = idx["spec"].Obj().getOwned();
- imd.ready = idx["ready"].trueValue();
- if (idx.hasField("head")) {
- imd.head = RecordId(idx["head"].Long());
- }
- else {
- imd.head = RecordId( idx["head_a"].Int(),
- idx["head_b"].Int() );
- }
- imd.multikey = idx["multikey"].trueValue();
- indexes.push_back( imd );
+ BSONElement e = obj["indexes"];
+ if (e.isABSONObj()) {
+ std::vector<BSONElement> entries = e.Array();
+ for (unsigned i = 0; i < entries.size(); i++) {
+ BSONObj idx = entries[i].Obj();
+ IndexMetaData imd;
+ imd.spec = idx["spec"].Obj().getOwned();
+ imd.ready = idx["ready"].trueValue();
+ if (idx.hasField("head")) {
+ imd.head = RecordId(idx["head"].Long());
+ } else {
+ imd.head = RecordId(idx["head_a"].Int(), idx["head_b"].Int());
}
+ imd.multikey = idx["multikey"].trueValue();
+ indexes.push_back(imd);
}
}
}
+}