Skip to content

feat(planner): compose exact operators with summary plans - #314

Closed
zzylol wants to merge 15 commits into
feat/exact-summary-composition-171from
feat/exact-composition-planner
Closed

zzylol wants to merge 15 commits into
feat/exact-summary-composition-171from
feat/exact-composition-planner

Conversation

@zzylol

@zzylol zzylol commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Stacked on #300.

Why

Exact outer operations should reuse inner summaries when accuracy and execution-data-state contracts permit it.

Before this PR

The planner could not construct and cost an exact operation around a summary result.

After this PR

For example, max by (zone) over a quantile becomes a read-time post-process, while an exact accumulator beneath a sketch becomes a maintenance-time transform. Invalid transitions fail before costing.

What and how

Verification

  • Exact-composition unit tests
  • Workspace check, formatting, and clippy

Stack

Base: #300. Next: #315.

@zzylol
zzylol force-pushed the feat/exact-composition-planner branch from 8d33043 to 5859f35 Compare August 30, 2026 18:21
@zzylol
zzylol force-pushed the feat/exact-composition-planner branch from 5859f35 to c4135df Compare August 30, 2026 18:30
@zzylol
zzylol force-pushed the feat/exact-composition-planner branch from be9b131 to 88bced3 Compare August 30, 2026 18:46
zzylol and others added 10 commits August 30, 2026 13:02
…ase boundaries (#171)

Add phase-explicit post-ASAP nodes SummaryExpr::{ExactTransform, ExactPostProcess}
carrying a non-exhaustive ExactOperator::Aggregate payload (never an intact
QueryExpr subtree), plus an ExecutionAvailability {UpdateValue, SummaryState,
ReadoutValue} derivation/validation (post_asap::phase) returning typed
PhaseErrors at construction. construct_summary_agg now validates its edge, so
a maintained summary over a query-time readout falls back conservatively
instead of producing an unexecutable plan.

Add ExactCompositionStrategy (registered in default_strategies) proposing
Replacement::ExactComposition candidates that reference the child target
rather than selecting a child; PlanSpace::global_selection commits the
compatible parent/child pair using the issue's cost-units-per-second
formulas (postprocess/pretransform vs raw-recompute baseline), counts shared
child state once, and GlobalSelection::materialize links the committed
decisions into one validated DAG with shared Rc identity.

Cost hooks: CostModel::mixed_execution_capabilities and
exact_composition_cost_inputs (unknowns stay None, never zero; missing
statistics keep KeepPreAsap). DAG export gains explicit per-node stage,
decision provenance, cost unit and child-decision links (additive).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@zzylol
zzylol force-pushed the feat/exact-composition-planner branch from 88bced3 to aa8353d Compare August 30, 2026 19:03
@zzylol
zzylol force-pushed the feat/exact-summary-composition-171 branch from 1b96726 to 5bcfb69 Compare August 30, 2026 21:08
@zzylol zzylol closed this Aug 30, 2026
@zzylol

zzylol commented Aug 30, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by the revised PR #300 design. ExecutionDataState, UpdateTransform, ReadoutPostProcess, ExactOperator, and ValueOperator were intentionally removed. Exact aggregates remain SummaryAgg; nested summaries are covered in #312; unsupported exact pre-ASAP operators remain KeepPreAsap instead of being duplicated in post-ASAP IR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant