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
Native Tumbling merge panics when do_merge=false but store returns >1 bucket #569
}else{assert_eq!(precomputes.len(),1,"Spatial queries should have exactly 1 precompute per key");
merged.insert(key.clone(), precomputes[0].clone_boxed_core());}
should_merge (from do_merge = range_ms > window_size_ms, computed in create_store_query_plan) assumes: query range == one window's width implies
exactly one stored bucket per key. That assumption isn't checked against what
the store actually returns — if the precompute engine has written more than
one bucket per key inside that window (e.g. one bucket per scrape interval),
the store legitimately returns all of them, and this line panics instead of
merging.
DataFusion's SummaryMergeMultipleExec has no such assumption — it merges
however many rows come back, unconditionally, so the identical scenario
already works there today.
Repro shape
window_size_ms=5000, query sum_over_time(metric[5s]) (range_ms == window_size_ms
→ do_merge=false), 5 buckets inserted for one key within that window
(1 per second) → native path panics; DataFusion path returns the correct
merged sum.
Fixed in #582 (e8d4d3b). merge_precomputed_outputs's should_merge=false branch no longer asserts precomputes.len() == 1; it now warns and merges via merge_accumulators regardless of count, matching the DataFusion path's unconditional-merge behavior.
Activity
milindsrivastava1997 commentedon Aug 24, 2026
Fixed in #582 (
e8d4d3b).merge_precomputed_outputs'sshould_merge=falsebranch no longer assertsprecomputes.len() == 1; it now warns and merges viamerge_accumulatorsregardless of count, matching the DataFusion path's unconditional-merge behavior.