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

[SBE] Add support for ExpressionMeta when _metaType == MetaType::kIndexKey

    XMLWordPrintable

Details

    • Bug
    • Status: Backlog
    • Major - P3
    • Resolution: Unresolved
    • None
    • None
    • Querying
    • ALL
    • Hide

      > db.adminCommand({setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: true});
      > db.c1.createIndex({a:1});
      > db.c1.find({a: 1}, {c: {$meta: 'indexKey'}});
      

       

      Show
      > db.adminCommand({setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: true}); > db.c1.createIndex({a:1}); > db.c1.find({a: 1}, {c: {$meta: 'indexKey'}});  

    Description

      A simple query with an index and $meta fails.

      Right now the query from the "Steps To Reproduce" section hits an invariant failure: reqs.has(kReturnKey) || !ixn->addKeyMetadata .

      I tried fixing this invariant by calling PlanStageReqs::set() at the top level to set kReturnKey, and then I re-ran the query from the "Steps To Reproduce" section. When I did this, I got the following error message: "Expression is not supported in SBE: $meta".

      So it looks like we need to update "sbe_stage_builder_expression.cpp" so that it can handle ExpressionMeta with _metaType == MetaType::kIndexKey .

      Attachments

        Activity

          People

            backlog-query-execution Backlog - Query Execution
            martin.neupauer@mongodb.com Martin Neupauer
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated: