MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / eval_vector_selector

Function eval_vector_selector

nodedb/src/control/promql/evaluator/selector.rs:11–46  ·  view source on GitHub ↗
(
    ctx: &EvalContext,
    name: Option<&str>,
    matchers: &[super::super::label::LabelMatcher],
    offset: Option<Duration>,
)

Source from the content-addressed store, hash-verified

9use super::EvalContext;
10
11pub fn eval_vector_selector(
12 ctx: &EvalContext,
13 name: Option<&str>,
14 matchers: &[super::super::label::LabelMatcher],
15 offset: Option<Duration>,
16) -> Result<Value, PromqlError> {
17 let eval_ts = ctx.timestamp_ms - offset.map_or(0, |d| d.ms());
18 let min_ts = eval_ts - ctx.lookback_ms;
19
20 let mut result = Vec::new();
21 for series in &ctx.series {
22 if let Some(n) = name
23 && series.metric_name() != n
24 {
25 continue;
26 }
27 if !matches_all(matchers, &series.labels) {
28 continue;
29 }
30
31 let sample = series
32 .samples
33 .iter()
34 .rev()
35 .find(|s| s.timestamp_ms >= min_ts && s.timestamp_ms <= eval_ts);
36
37 if let Some(s) = sample {
38 result.push(InstantSample {
39 labels: series.labels.clone(),
40 value: s.value,
41 timestamp_ms: eval_ts,
42 });
43 }
44 }
45 Ok(Value::Vector(result))
46}
47
48pub fn eval_matrix_selector(
49 ctx: &EvalContext,

Callers 1

evalFunction · 0.85

Calls 7

matches_allFunction · 0.85
msMethod · 0.80
metric_nameMethod · 0.45
findMethod · 0.45
iterMethod · 0.45
pushMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected