Implement LiteParsedDocumentSourceInternalSearchIdLookup

XMLWordPrintableJSON

    • Type: Task
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • Query Integration
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      In order to restrict the usage of $_internalSearchIdLookup by extensions, we need to provide a way for extensions to allocate an AstNode for Idlookup which extensions can expand into.

      In order to do so, we need to implement a host::AstNode which wraps a LiteParsedDocumentSource for $_internalSearchIdLookup. Currently, no such stage exists, instead, we use LiteParsedSearchStage, which is not quite correct. 

      As part of this ticket, implement a LiteParsedDocumentSourceInternalSearchIdLookup which can be used in the host::AstNode. 

      Implementation notes:

      The end goal here is that the extension will call a function in the API to allocate an IdLookup AstNode. The host will return a host::AggregationStageAstNode which holds a unique_ptr<LiteParsedDocumentSource> OR a unique_ptr<LiteParsedDocumentSourceIdLookup>.
      LiteParsedDocumentSourceIdLookup should keep the original BSON spec, and provide a method to expose the original BSON spec.  host::AggregationStageAstNode should have a public method that allows exposing the BSON spec:

      BSONObj host::AggregationStageAstNode::getIdLookupSpec() {
         return _liteParsedIdLookup->getBsonSpec();
      }
      

      This will allow us to parse the spec into a DocumentSource during expansion on the Host side of the boundary.

            Assignee:
            Unassigned
            Reporter:
            Santiago Roche
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: