Conversation
zzylol
force-pushed
the
stack/509-w2-executor-panes
branch
from
October 4, 2026 18:25
9624673 to
630efac
Compare
zzylol
changed the base branch from
stack/509-e2-keyed-additive-topk
to
stack/509-w3-relative-coverage
October 4, 2026 18:25
This was referenced Oct 4, 2026
Share one UnivMon across distinct, L2 and entropy; document why those readouts stay uncertified
#596
Draft
A tumbling pane (#580) reads TimeRange(w) over TimeShift(i*w) over Scan. The per-entity build path required the Scan directly under the TimeRange and rejected panes with "per-entity summary requires a resolved source". The deployment supplies the shifted raw rows, so look through one TimeShift to find the source schema. Ported from #566. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A per-series SummaryMerge grouped away the time column, so its native
output disagreed with the Planner schema ("native output type differs
from Planner output"). Merge by series identity, then attach the run
scope's timestamp with scope_timestamp, as per-series SummaryAgg does.
Pane build timestamps never reach the merged state. Ported from #569.
Regression tests merge 5 one-minute panes for an exact Sum and a KLL
quantile, rebuilt at query time and retained with distinct build
timestamps, and compare them with one 5-minute build.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pane coverage time is a CoverageTime since #592; the tumbling pane-merge test keeps absolute time ranges. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
zzylol
force-pushed
the
stack/509-w2-executor-panes
branch
from
October 5, 2026 06:21
630efac to
7fa00bd
Compare
zzylol
force-pushed
the
stack/509-w3-relative-coverage
branch
from
October 5, 2026 06:21
0f9db83 to
6b31d2d
Compare
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.
Rebased on main d4869a7 (DF 54).
Wave 1 chain: #594 → #593 → #592 → #591 → #595 → #596 → #597 → #598 → #599 (on #589)
Why
#580 will plan a tumbling window as N pane
SummaryAggs merged bySummaryMerge(#509 Example 3/4, Pattern B). PaneireadsTimeRange(w)overTimeShift(i·w)overScan. For per-series (PromQL) queries, the executor could not run that shape. This PR ports the executor parts of the parked #566 and #569 onto the renamedcrates/executor.What
TimeShift(from Generate exact window composition and materialization candidates #566). The per-entitySummaryAggpath requiredScandirectly underTimeRange. It now looks through oneTimeShift. The deployment supplies each pane's shifted raw rows.SummaryMergewhose output has atime_indexnow lowers to[union] → summary_merge (group by series, no ts) → scope_timestamp, the same pattern as per-seriesSummaryAgg. Pane build timestamps are grouped away, and the run scope supplies the time column. Non-temporal merges are unchanged.How it is tested
crates/executor/tests/tumbling_pane_merge.rstakes the selected single-build plan forsum_over_time(m[5m])(exact) andquantile_over_time(0.99, m[5m])(KLL, k=52). It rewrites the plan into 5 one-minute panes under aSummaryMergeand runs both versions over 2 series × 20 samples, at evaluation time 300 000 ms. Pane coverage uses absolute regions[T−(i+1)·60 000, T−i·60 000). The pane plan runs two ways:Scope::Ingestionfor their own window, so they have distinct build timestamps (60 000 … 300 000), then retained and merged at query time.Before this PR:
After this PR: both tests pass. Each path returns one row per series,
ts = 300 000, and the output is identical to the single 5-minute build: Sum[190, 2190], p99[19, 119]. 20 samples < k, so the KLL result is exact.Notes for the planner side (#580)
timing = QueryTimeon each node by hand.apply_materialization_timings(types) still returnsUnimplementedOperator { "SummaryMerge" }, so a planner-emitted pane plan cannot be exported until that rule is added.Gate:
cargo fmt --all --check,cargo clippy --workspace --all-targets --all-features -D warnings, andcargo test --workspacepass: 1,519 passed / 10 ignored, compared with 1,517 / 10 on #589. The +2 are the new tests.Origin: #566, #569. Part of #580 (item O), #509.
🤖 Generated with Claude Code