Conversation
3 tasks
This was referenced Sep 22, 2026
zzylol
changed the base branch from
refactor/backend-plan-split
to
fix/precompute-post-asap-dag
September 22, 2026 20:45
This was referenced Sep 22, 2026
…e-operators # Conflicts: # data_plane/src/query_engines/asap_clickhouse_query_engine/execution.rs # data_plane/src/query_engines/asap_query_engine/logical_dag.rs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Dependency stack: main → #768 → #737 → #749 → #771 → #728 → #770 → #763 → #765 → #761 → #742 → #759
Independent follow-ups to #765: #756 (diagnostics), #766 (runtime controls and overhead inspection).
Closes #764. Stacked on #763; the Planner-owned library is consumed through #770.
Before this PR
Installed query execution mixed backend traversal, duplicated relation/temporal computations and specialized candidate/ranking representations. Classifying a physical operator did not prove that its schema and parameters could execute.
After this PR
Both engines use the independent DAG runtime from Planner #462. SQL relations bind through the shared post-ASAP binder and execute in one native DAG. PromQL bindings send values and windows to shared Project, aggregation, semi-join, grouped Sort/Limit, temporal and histogram operators. Binary computation uses Planner kinds and checked-division contracts.
Stored-summary codecs, delta reconstruction, merge and readout computation now live in Planner. The backend selects sources/panes, validates population and window coverage, and converts protocol values. It does not carry a second copy of those algorithms. Relation installation rejects unsupported expressions/types through the same binder used for execution; source conversion preserves the complete Planner schema, including its time index.
SQL storage frontiers are evaluated together in one DAG run, retaining pane coverage and sharing the same parent cancellation signal and resource budget. A producer shared by two consumers executes once per run. Native calls preserve the caller's cancellation and resource budget. SQL empty/missing window inputs are classified as incomplete coverage. Raw local Scan remains deferred.
Candidate pruning is a general semi-join with explicit keys and completeness evidence, followed by Sort → Limit within each group. There is no dedicated MembershipFilter or grouped TopK physical operator.
Design and acceptance contract. The table below distinguishes implemented shared computation from remaining deployment capabilities; ingestion time and query time are phases, not separate operator definitions.
Physical operation coverage
Validation
Planner: 246 shared-library unit tests, 18 library integration tests, one doc test, 432 mapping tests and the integration package passed. Both repositories pass strict workspace/all-target Clippy.
Backend stack: 118 type and 444 control-plane library tests passed. The data-plane run passed 925 tests; its remaining persistence synchronization test was fixed and passed separately. All 19 compatibility process tests and 59 other integration tests passed. Tests cover shared SQL sources, cancellation, stored-state coverage, temporal Sort/Limit, HLL/KLL confidence, and ingestion publication/recovery.
The mandatory #754 gate still fails on grouped-temporal-Sum producer shape and quantile-ratio local execution. Those assertions remain intact. Full #759 performance acceptance is not established. Local raw Scan remains explicitly deferred.
The publication process test verifies that a successor is cold before its own data arrives, rejects old-generation frames and returns the successor's new values; it does not assume cross-version payload reuse.