With SERVER-103766, the QE-relevant methods and fields from DocumentSource are moved to agg::Stage and DocumentSource inherits from agg::Stage making it a light refactoring.
In this ticket, we need to 'move' this inheritance 'down' the hierarchy:
- DocumentSource inherits directly from RefCountable as before.
- agg::Stage does not inherit from RefCountable anymore.
- DocumentSource direct subclasses (around 80) inherit from both DocumentSource and agg::Stage (multiple inheritance).
- Dome test-only and QO-only document sources inherit only from DocumentSource and do not need agg::Stage (please ask me if you need a list).
- agg::Pipeline still contains StageContainer _stages, with StageContainer defined as std::list<boost::intrusive_ptr<Stage>>
- we need to temporarily add void intrusive_ptr_add_ref(Stage*) and void intrusive_ptr_release(Stage*), because agg::Stage does not inherit from RefCountable anymore.
Prototype commit for the reference (might not fully match the current design): https://github.com/10gen/mongo/pull/34036/commits/0839eed81d7a4596b5d8e112a5e1f0ba65263016
We need to run the performance tests on this change.
- depends on
-
SERVER-103766 Move DocumentSource's QE members to a parent class
-
- Closed
-
- is depended on by
-
SERVER-105683 Check if stage stitching is needed by both QO and QE or only by QE
-
- In Progress
-
-
SERVER-104225 Split DocumentSourceCursor into QO and QE components
-
- Needs Scheduling
-
-
SERVER-104227 Split DocumentSourceMatch into QO and QE components
-
- Needs Scheduling
-
-
SERVER-104228 Split DocumentSourceSingleDocumentTransforformation into QO and QE components
-
- Needs Scheduling
-
-
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
-
- is related to
-
SERVER-103766 Move DocumentSource's QE members to a parent class
-
- Closed
-
- related to
-
SERVER-104226 Use agg::Pipeline for generating explain output
-
- In Progress
-
-
SERVER-105371 Move remaining QE-relevant functions from Pipeline to agg::Pipeline
-
- In Progress
-
-
SERVER-103957 Move Pipeline::getNext() and Pipeline::getNextDocument() methods to agg::Pipeline()
-
- Closed
-