MCPcopy Create free account
hub / github.com/apache/datafusion / pipe_operator_aggregate

Method pipe_operator_aggregate

datafusion/sql/src/query.rs:323–359  ·  view source on GitHub ↗

Handle AGGREGATE pipe operator

(
        &self,
        plan: LogicalPlan,
        full_table_exprs: Vec<ExprWithAliasAndOrderBy>,
        group_by_expr: Vec<ExprWithAliasAndOrderBy>,
        planner_context: &mut PlannerContext,
 

Source from the content-addressed store, hash-verified

321
322 /// Handle AGGREGATE pipe operator
323 fn pipe_operator_aggregate(
324 &self,
325 plan: LogicalPlan,
326 full_table_exprs: Vec<ExprWithAliasAndOrderBy>,
327 group_by_expr: Vec<ExprWithAliasAndOrderBy>,
328 planner_context: &mut PlannerContext,
329 ) -> Result<LogicalPlan> {
330 let plan_schema = plan.schema();
331 let process_expr =
332 |expr_with_alias_and_order_by: ExprWithAliasAndOrderBy,
333 planner_context: &mut PlannerContext| {
334 let expr_with_alias = expr_with_alias_and_order_by.expr;
335 let sql_expr = expr_with_alias.expr;
336 let alias = expr_with_alias.alias;
337
338 let df_expr = self.sql_to_expr(sql_expr, plan_schema, planner_context)?;
339
340 match alias {
341 Some(alias_ident) => df_expr.alias_if_changed(alias_ident.value),
342 None => Ok(df_expr),
343 }
344 };
345
346 let aggr_exprs: Vec<Expr> = full_table_exprs
347 .into_iter()
348 .map(|e| process_expr(e, planner_context))
349 .collect::<Result<Vec<_>>>()?;
350
351 let group_by_exprs: Vec<Expr> = group_by_expr
352 .into_iter()
353 .map(|e| process_expr(e, planner_context))
354 .collect::<Result<Vec<_>>>()?;
355
356 LogicalPlanBuilder::from(plan)
357 .aggregate(group_by_exprs, aggr_exprs)?
358 .build()
359 }
360
361 /// Wrap the logical plan in a `SelectInto`
362 fn select_into(

Callers 1

pipe_operatorMethod · 0.80

Calls 7

alias_if_changedMethod · 0.80
schemaMethod · 0.45
sql_to_exprMethod · 0.45
mapMethod · 0.45
into_iterMethod · 0.45
buildMethod · 0.45
aggregateMethod · 0.45

Tested by

no test coverage detected