-
Type:
Bug
-
Resolution: Cannot Reproduce
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Query Optimization
-
ALL
-
None
-
3
-
None
-
None
-
None
-
None
-
None
-
None
db.bug1.insert({})
db.bug1.createIndex({a:1})
db.bug1.find({a:{$elemMatch:{$not:{$in:[]}}}}).explain(true)
MongoServerError: Out-of-bounds access to child of MatchExpression.
Stack:
mongo::tassertFailed(mongo::Status const&, mongo::SourceLocation) mongo::ElemMatchValueMatchExpression::getChild(unsigned long) const::{lambda()#1}::operator()() const mongo::ElemMatchValueMatchExpression::getChild(unsigned long) const mongo::IndexBoundsBuilder::_translatePredicate(mongo::MatchExpression const*, mongo::BSONElement const&, mongo::IndexEntry const&, mongo::OrderedIntervalList*, mongo::IndexBoundsBuilder::BoundsTightness*, mongo::interval_evaluation_tree::Builder*) mongo::IndexBoundsBuilder::translate(mongo::MatchExpression const*, mongo::BSONElement const&, mongo::IndexEntry const&, mongo::OrderedIntervalList*, mongo::IndexBoundsBuilder::BoundsTightness*, mongo::interval_evaluation_tree::Builder*) mongo::QueryPlannerAccess::makeLeafNode(mongo::CanonicalQuery const&, mongo::IndexEntry const&, unsigned long, mongo::MatchExpression const*, mongo::IndexBoundsBuilder::BoundsTightness*, mongo::interval_evaluation_tree::Builder*) mongo::QueryPlannerAccess::_buildIndexedDataAccess(mongo::CanonicalQuery const&, mongo::MatchExpression*, std::unique_ptr<mongo::MatchExpression, std::default_delete<mongo::MatchExpression> >, std::vector<mongo::IndexEntry, std::allocator<mongo::IndexEntry> > const&, mongo::QueryPlannerParams const&) mongo::QueryPlannerAccess::buildIndexedDataAccess(mongo::CanonicalQuery const&, std::unique_ptr<mongo::MatchExpression, std::default_delete<mongo::MatchExpression> >, std::vector<mongo::IndexEntry, std::allocator<mongo::IndexEntry> > const&, mongo::QueryPlannerParams const&) mongo::QueryPlanner::plan(mongo::CanonicalQuery const&, mongo::QueryPlannerParams const&) mongo::(anonymous namespace)::PrepareExecutionHelper<mongo::PlanCacheKey, mongo::(anonymous namespace)::ClassicRuntimePlannerResult>::finishPrepare() mongo::(anonymous namespace)::PrepareExecutionHelper<mongo::PlanCacheKey, mongo::(anonymous namespace)::ClassicRuntimePlannerResult>::prepare() mongo::(anonymous namespace)::getClassicPlanner(mongo::OperationContext*, mongo::MultipleCollectionAccessor const&, mongo::CanonicalQuery*, mongo::PlanYieldPolicy::YieldPolicy, std::unique_ptr<mongo::QueryPlannerParams, std::default_delete<mongo::QueryPlannerParams> >) mongo::getExecutorFind(mongo::OperationContext*, mongo::MultipleCollectionAccessor const&, std::unique_ptr<mongo::CanonicalQuery, std::default_delete<mongo::CanonicalQuery> >, mongo::PlanYieldPolicy::YieldPolicy, unsigned long, mongo::Pipeline*, bool, boost::optional<mongo::TraversalPreference>, std::variant<mongo::AutomaticShardFiltering, mongo::ProofOfUpstreamFiltering>)::{lambda(std::unique_ptr<mongo::QueryPlannerParams, std::default_delete<mongo::QueryPlannerParams> >)#1}::operator()(std::unique_ptr<mongo::QueryPlannerParams, std::default_delete<mongo::QueryPlannerParams> >) const mongo::getExecutorFind(mongo::OperationContext*, mongo::MultipleCollectionAccessor const&, std::unique_ptr<mongo::CanonicalQuery, std::default_delete<mongo::CanonicalQuery> >, mongo::PlanYieldPolicy::YieldPolicy, unsigned long, mongo::Pipeline*, bool, boost::optional<mongo::TraversalPreference>, std::variant<mongo::AutomaticShardFiltering, mongo::ProofOfUpstreamFiltering>)::{lambda()#4}::operator()() const