Skip to content

fix: grouping with alias#21438

Open
timsaucer wants to merge 5 commits intoapache:mainfrom
timsaucer:bugfix/grouping-with-alias
Open

fix: grouping with alias#21438
timsaucer wants to merge 5 commits intoapache:mainfrom
timsaucer:bugfix/grouping-with-alias

Conversation

@timsaucer
Copy link
Copy Markdown
Member

Which issue does this PR close?

Rationale for this change

When you have an alias on grouping function via dataframe API, you get an error. This resolves that error.

What changes are included in this PR?

Check for alias expressions in optimizer.
Add unit tests.

Are these changes tested?

Unit test added, including a note on why a SQL logic test will not cover this case.

Are there any user-facing changes?

None

timsaucer and others added 2 commits April 6, 2026 16:42
…t is needed

The SQL planner handles aliasing via projection, so ResolveGroupingFunction
never sees Expr::Alias in SQL queries. Only the DataFrame API produces that
expression shape, making the SQL test insufficient as a regression test.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@github-actions github-actions bot added optimizer Optimizer rules core Core DataFusion crate labels Apr 7, 2026
@timsaucer timsaucer marked this pull request as ready for review April 7, 2026 12:19
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes DataFrame API aggregation planning when grouping() is wrapped in an Expr::Alias, aligning behavior with SQL planning and preventing a physical planning error for GROUPING.

Changes:

  • Extend ResolveGroupingFunction to recognize grouping() when wrapped in Expr::Alias.
  • Update grouping-function detection to recurse through alias nodes.
  • Add a DataFrame regression test covering grouping(col).alias(...) in aggregates.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
datafusion/optimizer/src/analyzer/resolve_grouping_function.rs Teach the analyzer rule to detect/replace aliased grouping() expressions.
datafusion/core/tests/dataframe/mod.rs Add regression coverage for aliased grouping() via the DataFrame API.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core Core DataFusion crate optimizer Optimizer rules

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ResolveGroupingFunction does not unwrap Alias nodes

2 participants