You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Pass 2 sharing and Stage 1 coverage parity with the retired MajorPass #580
Follow-up to #581 (#509 stage pipeline replaces MajorPass, #572 update of 2026-10-04). The facade now runs Stage 1 (logical_candidates) → Stage 2 (physical_candidates) → Stage 3 (plan_selection). These temporary regressions were accepted and must be closed.
Pass 2 sharing
Stage 1 lists one target's local alternatives only. The pipeline merges identical input sub-DAGs and identical summary producers after composition, but it does not plan sharing across queries:
one state sized for the strictest consumer;
one state that serves several statistics, such as p50 and p99 KLL and UnivMon moments.
Stage 1 coverage
MajorPass strategies that have no Stage 1 counterpart yet: rollup, avg → sum/count rewrite, top-k limit reuse, exact composition, shared sub-DAG and accuracy reconciliation, Hydra grouping, maintained populations.
Selection differences
Stage 2 runs every node at query time. Under Stage 3's analytical pricing, a query-time summary therefore never costs less than the raw aggregate it replaces, so the pipeline selects raw plans where MajorPass selected summaries. This will change once Stage 2 plans materialization.
raw plan selected: quantiles_with_equal_params_share_one_producer, different_producers_are_not_shared, identical_ungrouped_queries_share_their_producers, identical_sql_percentiles_share_one_producer
Changed expectation: crates/integration-tests/tests/operator_design_examples.rsbatch_planning_selects_and_executes_each_plan (was batch_planning_replaces_and_shares_summary_operators): Stage 3 selects the raw SUM.
Legacy selection still in replacement.rs
Nothing in the facade uses it any more. The next PR (D2) moves it, and a later one deletes it once the parity above holds:
GlobalSelection and its impl (assemble_selected_dag, ...);
Stage 3 prices plans analytically (plan_selection::price), so the stage pipeline never reads PlanningModels.cost; only the legacy search above does. This is documented on PlanningModels. Either Stage 3 takes a cost model, or the field goes away with the legacy search.
Activity
feat(planner): declare counter metrics so CMS+heap can prove non-nega…
fix(executor): build per-entity summaries over a TimeShift pane
feat(planner): Pass 2 summary-capability rule as a Stage 1 sharing va…
executor: HydraCms kernel over asap_sketchlib::Hydra
feat(planner): Pass 1 offers HydraCms for grouped approximate counts
feat(planner): run the planning stages as the planner pipeline; retir…