mirror of https://github.com/mongodb/mongo
Reverse when the initial btree scan finds no geo points. SERVER-1283
This commit is contained in:
parent
6aff5cd70c
commit
27e684c097
|
|
@ -766,7 +766,7 @@ namespace mongo {
|
|||
min.checkCur( found , hopper );
|
||||
max = min;
|
||||
|
||||
if ( min.bucket.isNull() ){
|
||||
if ( min.bucket.isNull() || ( !(hopper->found()) ) ){
|
||||
min.bucket = id.head.btree()->locate( id , id.head , start.wrap() ,
|
||||
ordering , min.pos , min.found , minDiskLoc , -1 );
|
||||
min.checkCur( found , hopper );
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
// Was reported as SERVER-1283.
|
||||
// The problem seems to be that sometimes the index btrees are such that
|
||||
// the first search for a matching point in the geo code could run to
|
||||
// the end of the btree and not reverse direction (leaving the rest of
|
||||
// the search always looking at some random non-matching point).
|
||||
|
||||
t=db.geo_box;
|
||||
t.drop();
|
||||
|
||||
t.insert({"_id": 1, "geo" : [ 33, -11.1 ] });
|
||||
t.insert({"_id": 2, "geo" : [ -122, 33.3 ] });
|
||||
t.insert({"_id": 3, "geo" : [ -122, 33.4 ] });
|
||||
t.insert({"_id": 4, "geo" : [ -122.28, 37.67 ] });
|
||||
t.insert({"_id": 5, "geo" : [ -122.29, 37.68 ] });
|
||||
t.insert({"_id": 6, "geo" : [ -122.29, 37.67 ] });
|
||||
t.insert({"_id": 7, "geo" : [ -122.29, 37.67 ] });
|
||||
t.insert({"_id": 8, "geo" : [ -122.29, 37.68 ] });
|
||||
t.insert({"_id": 9, "geo" : [ -122.29, 37.68 ] });
|
||||
t.insert({"_id": 10, "geo" : [ -122.3, 37.67 ] });
|
||||
t.insert({"_id": 11, "geo" : [ -122.31, 37.67 ] });
|
||||
t.insert({"_id": 12, "geo" : [ -122.3, 37.66 ] });
|
||||
t.insert({"_id": 13, "geo" : [ -122.2435, 37.637072 ] });
|
||||
t.insert({"_id": 14, "geo" : [ -122.289505, 37.695774 ] });
|
||||
|
||||
|
||||
t.ensureIndex({ geo : "2d" });
|
||||
|
||||
c=t.find({geo: {"$within": {"$box": [[-125.078461,36.494473], [-120.320648,38.905199]]} } });
|
||||
assert.eq(11, c.count(), "A1");
|
||||
|
||||
c=t.find({geo: {"$within": {"$box": [[-124.078461,36.494473], [-120.320648,38.905199]]} } });
|
||||
assert.eq(11, c.count(), "B1");
|
||||
Loading…
Reference in New Issue