From 3cdfe3df9fd4ecd43f922d6b5e792c4ae9bba01f Mon Sep 17 00:00:00 2001 From: Ruihang Xia Date: Tue, 2 Jun 2026 10:29:13 +0800 Subject: [PATCH] clear ctx Signed-off-by: Ruihang Xia --- src/query/src/promql/planner.rs | 39 +++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/src/query/src/promql/planner.rs b/src/query/src/promql/planner.rs index 91f2582df4..4d714ecbee 100644 --- a/src/query/src/promql/planner.rs +++ b/src/query/src/promql/planner.rs @@ -1073,11 +1073,16 @@ impl PromPlanner { .chain(field_exprs) .collect::>>()?; - LogicalPlanBuilder::from(input) + let plan = LogicalPlanBuilder::from(input) .project(project_exprs) .context(DataFusionPlanningSnafu)? .build() - .context(DataFusionPlanningSnafu) + .context(DataFusionPlanningSnafu)?; + + self.ctx.table_name = None; + self.ctx.schema_name = None; + + Ok(plan) } async fn prom_binary_expr_to_plan( @@ -5628,6 +5633,36 @@ mod test { ); } + #[tokio::test] + async fn binary_island_clears_qualifier_for_nested_unary_projection() { + let eval_stmt = build_eval_stmt("-((some_metric + some_alt_metric) / some_metric)"); + + let table_provider = build_test_table_provider_with_tsid( + &[ + (DEFAULT_SCHEMA_NAME.to_string(), "some_metric".to_string()), + ( + DEFAULT_SCHEMA_NAME.to_string(), + "some_alt_metric".to_string(), + ), + ], + 1, + 1, + ) + .await; + let plan = + PromPlanner::stmt_to_plan(table_provider, &eval_stmt, &build_query_engine_state()) + .await + .unwrap(); + + let plan_str = plan.display_indent_schema().to_string(); + assert_eq!(plan_str.matches("__tsid =").count(), 1, "{plan_str}"); + assert_eq!( + plan_str.matches("PromInstantManipulate").count(), + 2, + "{plan_str}" + ); + } + #[tokio::test] async fn binary_island_keeps_distinct_matcher_leaves() { let eval_stmt = build_eval_stmt(