alamb commented on code in PR #11469: URL: https://github.com/apache/datafusion/pull/11469#discussion_r1680032211
########## datafusion/sql/src/select.rs: ########## @@ -297,6 +298,9 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> { input: LogicalPlan, select_exprs: Vec<Expr>, ) -> Result<LogicalPlan> { + // Try process group by unnest + let input = self.try_process_aggregate_unnest(input)?; Review Comment: Tracked in https://github.com/apache/datafusion/issues/11498 ########## datafusion/sql/src/select.rs: ########## @@ -354,6 +358,118 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> { .build() } + fn try_process_aggregate_unnest(&self, input: LogicalPlan) -> Result<LogicalPlan> { + match &input { + LogicalPlan::Aggregate(agg) => { + let (new_input, new_group_by_exprs) = + self.try_process_group_by_unnest(agg)?; + LogicalPlanBuilder::from(new_input) + .aggregate(new_group_by_exprs, agg.aggr_expr.clone())? + .build() + } + LogicalPlan::Filter(filter) => match filter.input.as_ref() { + LogicalPlan::Aggregate(agg) => { + let (new_input, new_group_by_exprs) = + self.try_process_group_by_unnest(agg)?; + LogicalPlanBuilder::from(new_input) + .aggregate(new_group_by_exprs, agg.aggr_expr.clone())? + .filter(filter.predicate.clone())? + .build() + } + _ => Ok(input), + }, + _ => Ok(input), + } + } + + /// Try converting Unnest(Expr) of group by to Unnest/Projection + /// Return the new input and group_by_exprs of Aggregate. + fn try_process_group_by_unnest( Review Comment: Tracked in https://github.com/apache/datafusion/issues/11498 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org For additional commands, e-mail: github-h...@datafusion.apache.org