summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage/rocks/rocks_collection_catalog_entry.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/storage/rocks/rocks_collection_catalog_entry.cpp')
-rw-r--r--src/mongo/db/storage/rocks/rocks_collection_catalog_entry.cpp124
1 files changed, 4 insertions, 120 deletions
diff --git a/src/mongo/db/storage/rocks/rocks_collection_catalog_entry.cpp b/src/mongo/db/storage/rocks/rocks_collection_catalog_entry.cpp
index ecd7b374c1e..40487469f07 100644
--- a/src/mongo/db/storage/rocks/rocks_collection_catalog_entry.cpp
+++ b/src/mongo/db/storage/rocks/rocks_collection_catalog_entry.cpp
@@ -51,53 +51,16 @@ namespace mongo {
RocksCollectionCatalogEntry::RocksCollectionCatalogEntry( RocksEngine* engine,
const StringData& ns )
- : CollectionCatalogEntry( ns ),
+ : BSONCollectionCatalogEntry( ns ),
_engine( engine ),
_metaDataKey( string( "metadata-" ) + ns.toString() ) { }
- CollectionOptions RocksCollectionCatalogEntry::getCollectionOptions(
- OperationContext* txn ) const {
- // TODO: put more options in here?
- return CollectionOptions();
- }
-
- // ------- indexes ----------
-
- int RocksCollectionCatalogEntry::getTotalIndexCount() const {
- MetaData md = _getMetaData();
-
- return static_cast<int>( md.indexes.size() );
- }
-
- int RocksCollectionCatalogEntry::getCompletedIndexCount() const {
- MetaData md = _getMetaData();
-
- int num = 0;
- for ( unsigned i = 0; i < md.indexes.size(); i++ ) {
- if ( md.indexes[i].ready )
- num++;
- }
- return num;
- }
-
int RocksCollectionCatalogEntry::getMaxAllowedIndexes() const {
return _maxAllowedIndexes;
}
- void RocksCollectionCatalogEntry::getAllIndexes( std::vector<std::string>* names ) const {
- MetaData md = _getMetaData();
-
- for ( unsigned i = 0; i < md.indexes.size(); i++ ) {
- names->push_back( md.indexes[i].spec["name"].String() );
- }
- }
-
- BSONObj RocksCollectionCatalogEntry::getIndexSpec( const StringData& indexName ) const {
- return getIndexSpec( indexName, _engine->getDB() );
- }
-
- BSONObj RocksCollectionCatalogEntry::getIndexSpec( const StringData& indexName,
- rocksdb::DB* db ) const {
+ BSONObj RocksCollectionCatalogEntry::getOtherIndexSpec( const StringData& indexName,
+ rocksdb::DB* db ) const {
MetaData md = _getMetaData( db );
int offset = md.findIndexOffset( indexName );
@@ -105,30 +68,6 @@ namespace mongo {
return md.indexes[offset].spec.getOwned();
}
- bool RocksCollectionCatalogEntry::isIndexMultikey( const StringData& indexName) const {
- MetaData md = _getMetaData();
-
- int offset = md.findIndexOffset( indexName );
- invariant( offset >= 0 );
- return md.indexes[offset].multikey;
- }
-
- DiskLoc RocksCollectionCatalogEntry::getIndexHead( const StringData& indexName ) const {
- MetaData md = _getMetaData();
-
- int offset = md.findIndexOffset( indexName );
- invariant( offset >= 0 );
- return md.indexes[offset].head;
- }
-
- bool RocksCollectionCatalogEntry::isIndexReady( const StringData& indexName ) const {
- MetaData md = _getMetaData();
-
- int offset = md.findIndexOffset( indexName );
- invariant( offset >= 0 );
- return md.indexes[offset].ready;
- }
-
bool RocksCollectionCatalogEntry::setIndexIsMultikey(OperationContext* txn,
const StringData& indexName,
bool multikey ) {
@@ -233,7 +172,7 @@ namespace mongo {
invariant( status.ok() );
}
- RocksCollectionCatalogEntry::MetaData RocksCollectionCatalogEntry::_getMetaData() const {
+ RocksCollectionCatalogEntry::MetaData RocksCollectionCatalogEntry::_getMetaData( OperationContext* txn ) const {
return _getMetaData( _engine->getDB() );
}
@@ -274,59 +213,4 @@ namespace mongo {
invariant( status.ok() );
}
- int RocksCollectionCatalogEntry::MetaData::findIndexOffset( const StringData& name ) const {
- for ( unsigned i = 0; i < indexes.size(); i++ )
- if ( indexes[i].spec["name"].String() == name )
- return i;
- return -1;
- }
-
- bool RocksCollectionCatalogEntry::MetaData::eraseIndex( const StringData& name ) {
- int indexOffset = findIndexOffset( name );
-
- if ( indexOffset < 0 ) {
- return false;
- }
-
- indexes.erase( indexes.begin() + indexOffset );
- return true;
- }
-
- BSONObj RocksCollectionCatalogEntry::MetaData::toBSON() const {
- BSONObjBuilder b;
- b.append( "ns", ns );
- {
- 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_a", indexes[i].head.a() );
- sub.append( "head_b", indexes[i].head.getOfs() );
- sub.done();
- }
- arr.done();
- }
- return b.obj();
- }
-
- void RocksCollectionCatalogEntry::MetaData::parse( const BSONObj& obj ) {
- ns = obj["ns"].valuestrsafe();
-
- 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();
- imd.head = DiskLoc( idx["head_a"].Int(),
- idx["head_b"].Int() );
- imd.multikey = idx["multikey"].trueValue();
- indexes.push_back( imd );
- }
- }
- }
}