Storage Engine API
record_store_v1_simple.h
Go to the documentation of this file.
1 // record_store_v1_simple.h
2 
31 #pragma once
32 
36 
37 namespace mongo {
38 
39 class SimpleRecordStoreV1Cursor;
40 
41 // used by index and original collections
43 public:
44  SimpleRecordStoreV1(OperationContext* opCtx,
45  StringData ns,
47  ExtentManager* em,
48  bool isSystemIndexes);
49 
50  virtual ~SimpleRecordStoreV1();
51 
52  const char* name() const {
53  return "SimpleRecordStoreV1";
54  }
55 
56  std::unique_ptr<SeekableRecordCursor> getCursor(OperationContext* opCtx,
57  bool forward) const final;
58 
59  std::vector<std::unique_ptr<RecordCursor>> getManyCursors(OperationContext* opCtx) const final;
60 
61  virtual Status truncate(OperationContext* opCtx);
62 
63  virtual void cappedTruncateAfter(OperationContext* opCtx, RecordId end, bool inclusive) {
64  invariant(!"cappedTruncateAfter not supported");
65  }
66 
67  virtual bool compactSupported() const {
68  return true;
69  }
70  virtual bool compactsInPlace() const {
71  return false;
72  }
73  virtual Status compact(OperationContext* opCtx,
75  const CompactOptions* options,
77 
78 protected:
79  virtual bool isCapped() const {
80  return false;
81  }
82  virtual bool shouldPadInserts() const {
83  return !_details->isUserFlagSet(CollectionOptions::Flag_NoPadding);
84  }
85 
86  virtual StatusWith<DiskLoc> allocRecord(OperationContext* opCtx,
87  int lengthWithHeaders,
88  bool enforceQuota);
89 
90  virtual void addDeletedRec(OperationContext* opCtx, const DiskLoc& dloc);
91 
92 private:
93  DiskLoc _allocFromExistingExtents(OperationContext* opCtx, int lengthWithHeaders);
94 
95  void _compactExtent(OperationContext* opCtx,
96  const DiskLoc diskloc,
97  int extentNumber,
99  const CompactOptions* compactOptions,
100  CompactStats* stats);
101 
103 
105 };
106 }
Definition: record_store.h:663
AtomicLockStats stats
Definition: lock_state.cpp:92
virtual bool shouldPadInserts() const
Definition: record_store_v1_simple.h:82
Definition: collection_options.h:127
virtual bool isCapped() const
Definition: record_store_v1_simple.h:79
virtual bool compactsInPlace() const
Does compact() leave RecordIds alone or can they change.
Definition: record_store_v1_simple.h:70
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
This class iterates over a non-capped collection identified by &#39;ns&#39;.
Definition: record_store_v1_simple_iterator.h:44
Definition: record_store_v1_base.h:152
OperationContext Database StringData BSONObj CollectionOptions::ParseKind bool const BSONObj &idIndex Status
Definition: database_impl.cpp:956
Definition: record_store_v1_simple.h:42
virtual Status truncate(OperationContext *opCtx)
removes all Records
Definition: record_store_v1_simple.cpp:196
represents a disk location/offset on disk in a database.
Definition: diskloc.h:53
bool inclusive
Definition: btree_interface.cpp:335
Definition: collection.h:77
std::vector< std::unique_ptr< RecordCursor > > getManyCursors(OperationContext *opCtx) const final
Returns many RecordCursors that partition the RecordStore into many disjoint sets.
Definition: record_store_v1_simple.cpp:244
std::unique_ptr< SeekableRecordCursor > getCursor(OperationContext *opCtx, bool forward) const final
Returns a new cursor over this record store.
Definition: record_store_v1_simple.cpp:239
Definition: index_key_validate.h:40
std::unique_ptr< RecordStoreV1MetaData > _details
Definition: record_store_v1_base.h:314
virtual StatusWith< DiskLoc > allocRecord(OperationContext *opCtx, int lengthWithHeaders, bool enforceQuota)
Definition: record_store_v1_simple.cpp:148
virtual void cappedTruncateAfter(OperationContext *opCtx, RecordId end, bool inclusive)
Truncate documents newer than the document at &#39;end&#39; from the capped collection.
Definition: record_store_v1_simple.h:63
virtual const std::string & ns() const
Definition: record_store.h:295
DiskLoc _allocFromExistingExtents(OperationContext *opCtx, int lengthWithHeaders)
Definition: record_store_v1_simple.cpp:85
virtual void addDeletedRec(OperationContext *opCtx, const DiskLoc &dloc)
Definition: record_store_v1_simple.cpp:231
const char * name() const
Definition: record_store_v1_simple.h:52
OperationContext Database StringData BSONObj options
Definition: database_impl.cpp:949
virtual bool compactSupported() const
does this RecordStore support the compact operation?
Definition: record_store_v1_simple.h:67
virtual ~SimpleRecordStoreV1()
Definition: record_store_v1_simple.cpp:83
Definition: collection.h:97
const RecordStoreV1MetaData * details() const
Definition: record_store_v1_base.h:231
ExtentManager basics.
Definition: extent_manager.h:64
void _compactExtent(OperationContext *opCtx, const DiskLoc diskloc, int extentNumber, RecordStoreCompactAdaptor *adaptor, const CompactOptions *compactOptions, CompactStats *stats)
Definition: record_store_v1_simple.cpp:287
Definition: record_store_v1_base.h:46
bool _normalCollection
Definition: record_store_v1_simple.h:102
virtual Status compact(OperationContext *opCtx, RecordStoreCompactAdaptor *adaptor, const CompactOptions *options, CompactStats *stats)
Attempt to reduce the storage space used by this RecordStore.
Definition: record_store_v1_simple.cpp:432
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80
SimpleRecordStoreV1(OperationContext *opCtx, StringData ns, RecordStoreV1MetaData *details, ExtentManager *em, bool isSystemIndexes)
Definition: record_store_v1_simple.cpp:73