Conversation
zzylol
force-pushed
the
feat/promql-comparisons-sets
branch
from
September 30, 2026 18:27
90c1713 to
3fcb9e3
Compare
zzylol
force-pushed
the
fix/reject-promql-fill
branch
from
September 30, 2026 18:27
b8c843c to
feade00
Compare
VectorMatch has no fill field, so lowering silently dropped fill, fill_left, and fill_right, changing query results. Reject them with a fill-specific UnsupportedFeature error so the query falls back to exact execution, and lower the testdata corpus floor to the measured 1485. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
zzylol
force-pushed
the
feat/promql-comparisons-sets
branch
from
September 30, 2026 20:24
3fcb9e3 to
50f4aef
Compare
zzylol
force-pushed
the
fix/reject-promql-fill
branch
from
September 30, 2026 20:24
feade00 to
6eb8a84
Compare
Contributor
Author
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.
Stacked on #492.
Rebuilt into the linear stack on main. New
integrate:commit(s) fold in integration-branch resolutions this PR needs on top of the earlier stack: "record that PromQL fill modifiers are rejected".Why
VectorMatchhas no fill field, so the PromQL frontend loweredfill,fill_left, andfill_rightas if they weren't there. That changes which series are emitted and their values. A lowering error is the correct result: the deployment then sends the query to external exact execution.What
walk_binaryreturnsUnsupportedFeature("fillvector-matching modifier: ...")when a binary modifier has a fill value on either side. The parser puts every fill form intoBinModifier::fill_values, so this check covers all of them.fill_modifiers_are_rejected_not_ignoredcoversfill,fill_left,fill_right, both orderings offill_left ... fill_right, and combinations withon/ignoring/group_left/group_right/bool, including one nested in an aggregate.fillkeyword, so these queries never reach lowering there.Before this PR
left_vector + fill(0) right_vectorlowered toBinaryOp { vector_match: Some(Ignoring []) }, which is the same tree asleft_vector + right_vector.After this PR
The same query fails to lower with
unsupported feature:fillvector-matching modifier: ....Testdata corpus floor (
promql_corpus.rs): 1495 → 1485 (measured lowered count drops from 1529 to 1485). 44 queries are affected, all inpromql_corpus_testdata.txt(lines 342–386). Examples:left_vector + fill_left(5) fill_right(7) right_vectorleft_vector == bool fill(30) right_vectorrequests / on(status) group_left fill_right(1) limitsnode_meta * on(instance) group_right fill_left(1) cpu_infoThe docs corpus (47), awesome-prometheus-alerts, o11y-bench, and metrics-observability floors are unchanged. None of those corpora contain
fill.Validation
Ok(BinaryOp ...)) and passes after it.cargo fmt --all -- --check,cargo clippy --workspace --all-targets -- -D warnings, andcargo test --workspace --no-fail-fastall pass (1399 passed, 0 failed).🤖 Generated with Claude Code