-
Type: Task
-
Resolution: Done
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Aggregation Framework, Querying
-
None
-
Fully Compatible
-
Query 18 (08/05/16)
-
(copied to CRM)
Having $lookup and $graphLookup stages execute as a Pipeline within a Pipeline will make the execution plan for the aggregation pipeline more explicit. The parsed Pipeline instances will use a copy of the same CollatorInterface so that the $lookup and $graphLookup stages compare string values according to the collation of the collection the "aggregate" command was run on.
Work on this ticket will also change how PlanExecutor instances for aggregation queries are registered, in particular the PlanExecutor underlying DocumentSourceCursor. Currently the DocumentSourceCursor and the PipelineProxyStage classes both reference the underlying PlanExecutor in order to faciliate invalidation notifications for catalog operations such as collection and index drops. We can change the PlanExecutor underlying the DocumentSourceCursor to be registered on the CursorManager of the collection the cursor is on. This will simplify the membrane between the query and aggregation subsystems and will also address the segmentation fault reported in SERVER-24386.
- is depended on by
-
SERVER-25139 Make $lookup and $graphLookup respect the collation
- Closed
-
SERVER-24769 Support $lookup and $graphLookup with the 'from' field as a view
- Closed
- is related to
-
SERVER-23349 Make aggregation expressions/accumulators which perform string comparisons respect the collation
- Closed
- related to
-
SERVER-26789 Logging for $lookup less complete in 3.4 than 3.2
- Backlog
-
SERVER-22541 Aggregation plan executors should be owned by global cursor manager
- Closed
-
SERVER-25585 ClientCursor timeout logic can cause a hang.
- Closed