Repository navigation
Coverage lost with the legacy candidate_selection tests (follow-up of #580) #623
Copy link
Copy link
Open
Description
Follow-up of #580. The legacy selection (asap_plan_selection::candidate_selection: global_selection, cost_sorted, recurrence_profiles) and its legacy-only test files are being deleted (Q52, approved 2026-10-04). Some behaviours were covered only by those tests, and the #509 stage pipeline (plan_stages) doesn't cover them yet. Listing them here so the coverage can be rebuilt on the stage pipeline, or explicitly dropped.
Accuracy propagation and exact composition
- Max / avg over a quantile composes at query time, with accuracy propagated through the outer fold (
integration-tests/tests/exact_composition.rs:max_and_avg_over_quantile_compose_at_query_time_with_statistics,avg_over_quantile_keeps_the_sum_over_count_rewrite_as_a_competitor,promql_max_by_zone_over_quantile_over_time_composes,identity_and_genuine_multi_row_folds_both_compose,a_shared_inner_summary_is_materialized_once_for_several_outer_folds,outer_summary_over_an_exact_function_composes_at_ingestion_time,every_exact_accumulator_is_finalized_before_an_outer_sketch,root_target_rejects_unproven_composition,custom_accuracy_rule_survives_root_target_and_materialization). - DDSketch quantile ratio: the shared relative-error target, domain proofs, signed evaluations, population size (
promql_to_post_asap.rs:ddsketch_quantile_ratio_meets_the_shared_relative_error_target,ddsketch_ratio_without_domain_proof_is_uncertified,ddsketch_ratio_rejects_unsafe_domains,ddsketch_ratio_rejects_one_invalid_domain_when_the_other_is_missing,ddsketch_ratio_bound_holds_for_signed_pinned_sketch_evaluations,ddsketch_ratio_requires_a_supported_population_size). - Approximate children are never relabelled exact through binary arithmetic (
promql_binary_arithmetic_never_relabels_approximate_children_as_exact).
CSE share-vs-recompute by recurrence and consumer count
cost/recurrence.rs:plan_selection_uses_recurrence_profiles_for_cse_choicesand therecurrence_profiles_*tests (mixed intervals across roots sharing a sub-DAG, invalid rates, unreachable sites, repeated-reference multiplicity).candidate_selection.rs:cost_sorted_orders_shared_sub_dag_candidates_by_cse_share_decision,effective_consumer_count_corrects_a_nested_groups_share_decision,effective_repetition_materializes_a_cse_choice_for_a_single_edge_child,shared_ancestor_keeps_a_single_use_cse_descendant_selected,estimate_cost_does_not_scale_with_the_readers_own_consumer_count.
Rollup vs CSE
global_selection_compares_a_logical_rewrite_with_the_cse_choice,mixed_rewrite_group_keeps_and_selects_its_explicit_cse_pair,global_selection_propagates_uses_through_the_selected_rewrite,costed_logical_candidate_beats_uncosted_legacy_cse_choice.
Evidence-ranked physical cost
mixed_candidate_ranking_uses_explicit_candidate_costs,cost_sorted_pairs_each_candidate_with_its_own_estimate_cost,complete_plan_costs_reject_unbound_cse_arms,exact_composition.rs:missing_cost_statistics_preserve_the_conservative_retain_exact,unknown_runtime_capability_keeps_candidate_but_prevents_selection. See also Stage 3: evidence-driven cost (storage I/O, hand-off bytes) #615 (storage I/O and hand-off evidence).
Missing accuracy evidence is never selected
selection_never_chooses_a_candidate_missing_accuracy_evidence,grouping_cost_cannot_resurrect_unprovable_hydra_candidates,explicit_summary_infeasibility_prevents_selection,nothing_is_selected_when_the_root_target_rejects_every_summary. The frontend-promql tests for Hydra counts and uncalibrated UnivMon estimates were ported toplan_stages, so this is partly covered for those families.
Reconciled tighter-target propagation
global_selection_propagates_reconciled_consumers_to_the_tighter_group,cost_sorted_and_global_selection_handle_a_shared_looser_target,cost_sorted_and_global_selection_handle_a_single_consumer_looser_target.
Also legacy-only
integration-tests/tests/sql_to_post_asap.rsandpromql_to_post_asap.rspinned the post-ASAP shape thatASAPStrategies+global_selectionproduced for many SQL and PromQL queries (temporal reuse, joins, filters, top-k, binary arithmetic, exact workloads). Equivalent shape pins on Stage 1 candidates or the selected plan don't exist yet for most of them.
Metadata
Metadata
Assignees
Labels
No labels
Activity
chore(plan-selection): delete the legacy candidate_selection