-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
Query Execution
-
None
-
3
-
TBD
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
0
Ideally, once a QE pipeline is created from the given QO (document source) pipeline, we can destroy the QO pipeline. For this purpose, we need to examine all invocations of exec::agg::buildPipeline(pipeline->freeze()) responsible for QE pipeline creation and replace those with exec::agg::buildPipeline(std::move(pipeline)) where the latter is buildPipeline(Pipeline&&) override indicating the move-semantics.
In case of the 'explain' command, we can extract explain output from the QO pipeline before it is destroyed. We will also need to modify mergeExplains() method to accept QO pipeline's explain output instead of QO pipeline itself.
If for some other reason it is not possible to destroy a QO pipeline, we may try to convert it into a FrozenPipeline class offering read-only interface to avoid QO pipeline modification after the corresponding QE pipeline was created. On success, we could remove the Pipeline::_frozen flag which was added within this project together with the corresponding assertions in pipeline modification methods.
- depends on
-
SERVER-104226 Use agg::Pipeline for generating explain output
-
- Closed
-
-
SERVER-105371 Move remaining QE-relevant functions from Pipeline to agg::Pipeline
-
- Closed
-
-
SERVER-105683 Check if stage stitching is needed by both QO and QE or only by QE
-
- Closed
-
- is depended on by
-
SERVER-102417 Remove SPM-4106 temporary data structures, checks and methods
-
- Needs Scheduling
-
- related to
-
SERVER-107930 Separate Pipeline::serialize() into QO and QE parts
-
- Needs Scheduling
-
1.
|
Destroy QO Pipeline when QE Pipeline is created in RouterStagePipeline | SERVER-106560 |
|
Needs Scheduling | Unassigned |