summaryrefslogtreecommitdiff
path: root/src/mongo/db/query/planner_ixselect.cpp
diff options
context:
space:
mode:
authorQingyang Chen <qingyang.chen@10gen.com>2015-06-05 16:10:06 -0400
committerJason Rassi <rassi@10gen.com>2015-06-16 18:41:49 -0400
commit2b4474715604697acacca70c7f7647947b2c82f1 (patch)
tree6176ac301782aaf15069ab91cc013313c6662e6d /src/mongo/db/query/planner_ixselect.cpp
parent2bf8ac5739d517df9d762e25687eec4456738d49 (diff)
downloadmongo-2b4474715604697acacca70c7f7647947b2c82f1.tar.gz
SERVER-18309 have {$in: [.., null, ..]} not use sparse indexes
Closes #979 Signed-off-by: Jason Rassi <rassi@10gen.com>
Diffstat (limited to 'src/mongo/db/query/planner_ixselect.cpp')
-rw-r--r--src/mongo/db/query/planner_ixselect.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/mongo/db/query/planner_ixselect.cpp b/src/mongo/db/query/planner_ixselect.cpp
index c99743b4ca4..f883b5468be 100644
--- a/src/mongo/db/query/planner_ixselect.cpp
+++ b/src/mongo/db/query/planner_ixselect.cpp
@@ -154,6 +154,14 @@ namespace mongo {
}
}
+ // Can't check for $in w/ null element w/a sparse index.
+ if (exprtype == MatchExpression::MATCH_IN && index.sparse) {
+ const InMatchExpression* expr = static_cast<const InMatchExpression*>(node);
+ if (expr->getData().hasNull()) {
+ return false;
+ }
+ }
+
// We can't use a btree-indexed field for geo expressions.
if (exprtype == MatchExpression::GEO || exprtype == MatchExpression::GEO_NEAR) {
return false;