-
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.
- is depended on by
-
SERVER-111336 Implement Host::AggregationStageAstNode
-
- Backlog
-
-
SERVER-111607 Modify host::AstNode to wrap a LiteParsedDocumentSourceIdLookup
-
- Backlog
-