summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHari Khalsa <hkhalsa@10gen.com>2013-04-03 13:59:18 -0400
committerEric Milkie <milkie@10gen.com>2013-04-03 21:52:53 -0400
commit9a846d86881cc2a0b3a0ceca14a0248fc3c11e2b (patch)
treea20f47da233e7e72857360521fffc3203caa46fa
parent04707f7b39c2a5a4f25df05ceb9cb07cdd7fe092 (diff)
downloadmongo-9a846d86881cc2a0b3a0ceca14a0248fc3c11e2b.tar.gz
SERVER-9228 don't return dups when s2cursor yields, delegate to underlying btreecursor
-rw-r--r--src/mongo/db/geo/s2cursor.cpp6
-rw-r--r--src/mongo/db/geo/s2cursor.h3
2 files changed, 8 insertions, 1 deletions
diff --git a/src/mongo/db/geo/s2cursor.cpp b/src/mongo/db/geo/s2cursor.cpp
index f94971d8e08..56bb9230ce2 100644
--- a/src/mongo/db/geo/s2cursor.cpp
+++ b/src/mongo/db/geo/s2cursor.cpp
@@ -97,6 +97,12 @@ namespace mongo {
BSONObj S2Cursor::currKey() const { return _btreeCursor->currKey(); }
DiskLoc S2Cursor::refLoc() { return DiskLoc(); }
long long S2Cursor::nscanned() { return _nscanned; }
+ bool S2Cursor::getsetdup(DiskLoc loc) { return _btreeCursor->getsetdup(loc); }
+ void S2Cursor::aboutToDeleteBucket(const DiskLoc& b) {
+ if (NULL != _btreeCursor) {
+ _btreeCursor->aboutToDeleteBucket(b);
+ }
+ }
// This is the actual search.
bool S2Cursor::advance() {
diff --git a/src/mongo/db/geo/s2cursor.h b/src/mongo/db/geo/s2cursor.h
index ec4881d40db..d3cfa9e21b1 100644
--- a/src/mongo/db/geo/s2cursor.h
+++ b/src/mongo/db/geo/s2cursor.h
@@ -39,7 +39,8 @@ namespace mongo {
virtual bool isMultiKey() const { return true; }
virtual bool autoDedup() const { return false; }
virtual bool modifiedKeys() const { return true; }
- virtual bool getsetdup(DiskLoc loc) { return false; }
+ virtual bool getsetdup(DiskLoc loc);
+ virtual void aboutToDeleteBucket(const DiskLoc& b);
virtual string toString() { return "S2Cursor"; }
BSONObj indexKeyPattern() { return _keyPattern; }
virtual bool ok();