Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-100951

$elemMatch with $not empty $in triggers assertion

    • Type: Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Priority: Icon: Major - P3 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
      

            Assignee:
            Unassigned Unassigned
            Reporter:
            jess.balint@mongodb.com Jess Balint
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved: