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

Method project_window_output

datafusion/sql/src/unparser/plan.rs:481–511  ·  view source on GitHub ↗
(
        &self,
        window_expr: &[Expr],
        select: &mut SelectBuilder,
        agg: Option<&Aggregate>,
    )

Source from the content-addressed store, hash-verified

479 }
480
481 fn project_window_output(
482 &self,
483 window_expr: &[Expr],
484 select: &mut SelectBuilder,
485 agg: Option<&Aggregate>,
486 ) -> Result<()> {
487 let mut items = if select.already_projected() {
488 select.pop_projections()
489 } else {
490 vec![ast::SelectItem::Wildcard(
491 ast::WildcardAdditionalOptions::default(),
492 )]
493 };
494
495 items.extend(
496 window_expr
497 .iter()
498 .map(|expr| {
499 let expr = if let Some(agg) = agg {
500 unproject_agg_exprs(expr.clone(), agg, None)?
501 } else {
502 expr.clone()
503 };
504 self.select_item_to_sql(&expr)
505 })
506 .collect::<Result<Vec<_>>>()?,
507 );
508 select.projection(items);
509
510 Ok(())
511 }
512
513 fn window_input_requires_derived_subquery(plan: &LogicalPlan) -> bool {
514 // These operators either produce a SELECT list or apply SQL clauses

Calls 9

unproject_agg_exprsFunction · 0.85
already_projectedMethod · 0.80
pop_projectionsMethod · 0.80
select_item_to_sqlMethod · 0.80
extendMethod · 0.45
mapMethod · 0.45
iterMethod · 0.45
cloneMethod · 0.45
projectionMethod · 0.45

Tested by

no test coverage detected