diff --git a/src/query/src/promql/planner/set_operator.rs b/src/query/src/promql/planner/set_operator.rs index 7a14ff38ad4..9433fbbfd6c 100644 --- a/src/query/src/promql/planner/set_operator.rs +++ b/src/query/src/promql/planner/set_operator.rs @@ -20,7 +20,7 @@ use std::sync::Arc; use datafusion::logical_expr::{Cast, Extension, LogicalPlan, LogicalPlanBuilder}; use datafusion::prelude::{Column, Expr as DfExpr, JoinType}; use datafusion::scalar::ScalarValue; -use datafusion_common::{NullEquality, TableReference}; +use datafusion_common::{DFSchema, NullEquality, TableReference}; use datatypes::arrow::datatypes::DataType as ArrowDataType; use promql::extension_plan::UnionDistinctOn; use promql_parser::parser::token::{self, TokenType}; @@ -404,10 +404,17 @@ impl PromPlanner { DfExpr::Column(Column::new(None::, col)) } }); - let right_time_index_expr = DfExpr::Column(Column::new( + // The right operand does not necessarily qualify every column with the qualifier of its + // first field: a binary operation with a matching modifier (`on`, `ignoring`, `group_left`, + // `group_right`) derives its result labels from the left operand and projects them under + // that side's qualifier (`lhs.