-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
Query Integration
-
None
-
3
-
TBD
-
None
-
None
-
None
-
None
-
None
-
None
-
None
SERVER-110277 Introduced some initial changes to the split pipeline logic which provide a special case for splitting when we have a source stage followed by $_internalSearchIdLookup.
With the above change, we should now be splitting a pipeline at the $_internalSearchIdLookup stage (running on shards).
We’ll also need to modify existing methods in SplitPipeline, which allow for pushing down stages which can run on shards after the split point has been determined (i.e $match, $project, etc.).
For example:
_moveEligibleStreamingStagesBeforeSortOnShards()
_moveGroupFollowingSortFromMergerToShards()
_moveFinalUnwindFromShardsToMerger()
_propagateDocLimitToShards().
We should be able to modify the existing optimizations to see if we can push down those shard stages to the shards pipeline when we've split at an $_internalSearchIdLookup stage.
Currently those optimizations are focused on pushing stages to the shards beyond a $sort stage at the back of the shards pipeline. We’ll need to amend these optimizations so they can also be applied to our special case (i.e source stage followed by $_internalSearchIdLookup).
- depends on
-
SERVER-110277 Modify SplitPipeline code to accommodate special case of [$pluginVector, $_internalSearchIdLookup]
-
- Backlog
-