-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
Query Execution
-
QE 2025-04-28, QE 2025-05-12
-
None
-
3
-
None
-
None
-
None
-
None
-
None
-
None
Add and unit-test agg::Pipeline class prototype containing only pipeline creation methods.
Since the length of the agg::Pipeline is always known at creation time, we should reflect this in the interface and use a more cache-line friendly container for the pipeline stages.
Example:
namespace mongo::exec::agg { class Pipeline { using StagePtr= boost::intrusive_ptr<Stage>; using StageContainer = std::vector<StagePtr>; public: Pipeline(StageContainer&&); const StageContainer& getStages() const; private: StageContainer _stages; }; }
The stages added to the agg::Pipeline should be automatically 'stitched'.
Add and unit-test Pipeline-to-agg::Pipeline mapping function, e.g.,
namespace mongo { std::unique_ptr<exec::agg::Pipeline> exec::agg::buildPipeline(const Pipeline::SourceContainer&);
- depends on
-
SERVER-103954 Create a dynamic DocumentSource to agg::Stage mapping function
-
- In Progress
-
- is depended on by
-
SERVER-103957 Move Pipeline::getNext() and Pipeline::getNextDocument() methods to agg::Pipeline()
-
- Needs Scheduling
-