The explain command relies on the DocumentSource::serializeToArray() virtual method, which will remain in the DocumentSource class hierarchy. However, starting from a certain verbosity level of the explain command, it also requires common and specific execution statistics, which will be moved to the agg::Stage class hierarchy.
The output of the explain command should stay unchanged during and by the end of this project. An instance of Pipeline class will co-exist with the corresponding instance of agg::Pipeline for producing the expected explain command output.
Although at this point both Pipeline and agg::Pipeline share all the sources=stages, the goal of this ticket is to collect the execution statistics from the agg::Pipeline and merge, as if the stages were not shared.
Relevant prototype commit for the reference (might not fully match the current design): https://github.com/10gen/mongo/pull/34036/commits/89b3adeda666e2da88cf61f01828d38c5ff099b4
We need to be mindful about possible performance regressions and explain output changes on this one.
- depends on
-
SERVER-103957 Move Pipeline::getNext() and Pipeline::getNextDocument() methods to agg::Pipeline()
-
- Closed
-
- is depended on by
-
SERVER-104225 Split DocumentSourceCursor into QO and QE components
-
- Open
-
-
SERVER-104227 Split DocumentSourceMatch into QO and QE components
-
- Open
-
-
SERVER-104228 Split DocumentSourceSingleDocumentTransformation into QO and QE components
-
- In Progress
-
-
SERVER-104229 Split DocumentSourceGroup and DocumentSourceStreamingGroup into QO and QE components
-
- Needs Scheduling
-
-
SERVER-104230 Split DocumentSourceSort into QO and QE components
-
- Needs Scheduling
-
-
SERVER-104231 Split DocumentSourceLookUp into QO and QE components
-
- Needs Scheduling
-
-
SERVER-104232 Split DocumentSourceUnwind into QO and QE components
-
- Needs Scheduling
-
-
SERVER-104234 Split DocumentSourceInternalSetWindowFields into QO and QE components
-
- Needs Scheduling
-
-
SERVER-104238 Split DocumentSourceInternalDensify into QO and QE components
-
- Needs Scheduling
-
-
SERVER-104240 Split DocumentSourceUnionWith into QO and QE components
-
- Needs Scheduling
-
-
SERVER-104242 Split DocumentSourceGraphLookUp stage into QO and QE components
-
- Needs Scheduling
-
-
SERVER-105370 Split DocumentSourceFacet stage into QO and QE components
-
- Needs Scheduling
-
-
SERVER-105521 Check where we can delete DocumentSource pipeline once exec::agg::Pipeline is created
-
- Needs Scheduling
-
- is related to
-
SERVER-104224 Inherit individual DocumentSource subclasses from agg::Stage
-
- Closed
-
- related to
-
SERVER-105371 Move remaining QE-relevant functions from Pipeline to agg::Pipeline
-
- Closed
-