mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-07 22:02:56 +00:00
fix(promql-planner): update ctx field columns of OR operator (#5556)
* fix(promql-planner): update ctx field columns of OR operator * test: add sqlness test
This commit is contained in:
@@ -2418,6 +2418,7 @@ impl PromPlanner {
|
||||
// step 4: update context
|
||||
self.ctx.time_index_column = Some(left_time_index_column);
|
||||
self.ctx.tag_columns = all_tags.into_iter().collect();
|
||||
self.ctx.field_columns = vec![left_field_col.to_string()];
|
||||
|
||||
Ok(result)
|
||||
}
|
||||
@@ -3343,6 +3344,41 @@ mod test {
|
||||
}
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_nested_binary_op() {
|
||||
let mut eval_stmt = EvalStmt {
|
||||
expr: PromExpr::NumberLiteral(NumberLiteral { val: 1.0 }),
|
||||
start: UNIX_EPOCH,
|
||||
end: UNIX_EPOCH
|
||||
.checked_add(Duration::from_secs(100_000))
|
||||
.unwrap(),
|
||||
interval: Duration::from_secs(5),
|
||||
lookback_delta: Duration::from_secs(1),
|
||||
};
|
||||
|
||||
let case = r#"sum(rate(nginx_ingress_controller_requests{job=~".*"}[2m])) -
|
||||
(
|
||||
sum(rate(nginx_ingress_controller_requests{namespace=~".*"}[2m]))
|
||||
or
|
||||
vector(0)
|
||||
)"#;
|
||||
|
||||
let prom_expr = parser::parse(case).unwrap();
|
||||
eval_stmt.expr = prom_expr;
|
||||
let table_provider = build_test_table_provider_with_fields(
|
||||
&[(
|
||||
DEFAULT_SCHEMA_NAME.to_string(),
|
||||
"nginx_ingress_controller_requests".to_string(),
|
||||
)],
|
||||
&["namespace", "job"],
|
||||
)
|
||||
.await;
|
||||
// Should be ok
|
||||
let _ = PromPlanner::stmt_to_plan(table_provider, &eval_stmt, &build_session_state())
|
||||
.await
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn value_matcher() {
|
||||
// template
|
||||
|
||||
Reference in New Issue
Block a user