Implement LiteParsedDocumentSourceInternalSearchIdLookup

XMLWordPrintableJSON

    • Query Integration
    • Fully Compatible
    • 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:
            Daniel Segel
            Reporter:
            Santiago Roche
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: