Skip to content

[AURON #2574] Support native cumulative rows windows for MIN, MAX and COUNT - #2575

Open
lyne7-sc wants to merge 7 commits into
apache:masterfrom
lyne7-sc:feat/native-min-max-count-window-rows
Open

lyne7-sc wants to merge 7 commits into
apache:masterfrom
lyne7-sc:feat/native-min-max-count-window-rows

Conversation

@lyne7-sc

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

Closes #2574

Rationale for this change

MIN, MAX and COUNT windows fall back to Spark because native conversion does not handle their AggregateExpression wrapper. Enabling these windows also requires fixing the shared floating-point min/max implementation, which can produce incorrect results when NaN appears before or after an ordinary value.

What changes are included in this PR?

  • Unwrap non-distinct, unfiltered, Complete MIN/MAX/COUNT aggregates while retaining the existing cumulative ROWS frame restriction.
  • Apply Spark-compatible NaN ordering during min/max updates and merges, preserving ordinary comparisons and signed-zero behavior.
  • Add result-comparison tests for window aggregates, input types, NULL handling, batch boundaries and grouped floating-point aggregates.

Are there any user-facing changes?

MIN/MAX/COUNT cumulative rows windows can execute natively when native window execution is enabled.

How was this patch tested?

  • Added float_min_max_nan_update_and_merge to verify floating-point MIN/MAX semantics during updates and merges.
  • Extended AuronWindowSuite to compare cumulative ROWS windows and grouped aggregate results with Spark.

Was this patch authored or co-authored using generative AI tooling?

  • Yes
  • No

If yes, include: Generated-by: OpenAI Codex (GPT-6)

ASF guidance: https://www.apache.org/legal/generative-tooling.html

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support native cumulative rows windows for MIN, MAX and COUNT

1 participant