Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-103956

Create a rudimentary agg::Pipeline class

    • Type: Icon: Task Task
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 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&);
      

            Assignee:
            romans.kasperovics@mongodb.com Romans Kasperovics
            Reporter:
            romans.kasperovics@mongodb.com Romans Kasperovics
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: