Details
-
Improvement
-
Resolution: Fixed
-
Major - P3
-
None
-
None
-
None
-
Query Execution
-
Fully Compatible
-
QE 2024-01-22, QE 2024-02-05
-
1
Description
The project will be mostly contained inside classic_runtime_planner_for_sbe namespace.
In it, we should have something like
struct PlannerData {
|
std::unique_ptr<CanonicalQuery> cq;
|
std::unique_ptr<PlanYieldPolicySBE> sbeYieldPolicy;
|
std::unique_ptr<WorkingSet> workingSet;
|
const MultipleCollectionAccessor& collections; |
const QueryPlannerParams& plannerParams; |
};
|
|
|
|
|
class PlannerInterface { |
public: |
virtual ~PlannerInterface() = default; |
virtual std::unique_ptr<PlanExecutor, PlanExecutor::Deleter> plan() = 0; |
};
|
And PlannerInterface implementations for SingleSolutionPlanner, MultiPlanner, SubPlanner and CachedPlanner.
In this ticket, this implementations can be stubs, that will be expanded in the future tickets.
The corresponding classic_runtime_planner_for_sbe::*Planner should be used in mongo::getExecutorFind function by implementing a new PrepareExecutionHelper
Attachments
Issue Links
- depends on
-
SERVER-83343 Create feature flag for Classic multi-planner for SBE
-
- Closed
-
- is depended on by
-
SERVER-85241 Implement classic_runtime_planner_for_sbe::SubPlanner
-
- In Code Review
-
-
SERVER-85235 Implement classic_runtime_planner_for_sbe::MultiPlanner
-
- Closed
-
-
SERVER-85237 Implement classic_runtime_planner_for_sbe::CachedPlanner without replanning
-
- Closed
-
-
SERVER-85247 Create unit tests for classic_runtime_planner_for_sbe
-
- Closed
-