Skip to content

[AURON #1856] Introduce Flink expression-level converter framework#2146

Merged
Tartarus0zm merged 2 commits intoapache:masterfrom
weiqingy:AURON-1856-impl
Apr 2, 2026
Merged

[AURON #1856] Introduce Flink expression-level converter framework#2146
Tartarus0zm merged 2 commits intoapache:masterfrom
weiqingy:AURON-1856-impl

Conversation

@weiqingy
Copy link
Copy Markdown
Contributor

@weiqingy weiqingy commented Apr 1, 2026

Which issue does this PR close?

Closes #1856

Rationale for this change

Auron's Flink integration has the data exchange layer in place (Arrow Writer #1850, Arrow Reader #1851) but lacks the conversion infrastructure — the machinery that decides which Flink expressions and aggregates can be converted to native execution and how to translate them into Auron's protobuf representation.

What changes are included in this PR?

Five foundational Java classes in auron-flink-planner:

Class Role
FlinkNodeConverter<T> Generic base interface: getNodeClass(), isSupported(), convert()PhysicalExprNode
FlinkRexNodeConverter Sub-interface for Calcite RexNode expressions
FlinkAggCallConverter Sub-interface for Calcite AggregateCall aggregates
FlinkNodeConverterFactory Singleton registry with separate rexConverterMap + aggConverterMap, typed registration and fail-safe dispatch
ConverterContext Immutable holder for input schema (RowType), Flink config, Auron config, and classloader

pom.xml: flink-core scope changed from test to provided (required for ReadableConfig).

Framework-only — no concrete converter implementations. Follow-up issues will add RexLiteral, RexInputRef, RexCall, and aggregate converters.

Design doc: docs/PR-AURON-1856/AURON-1856-DESIGN.md
Review helper: docs/reviewhelper/AURON-1856/01-converter-framework.md

Are there any user-facing changes?

No.

How was this patch tested?

8 unit tests. Checkstyle: 0 violations.

@github-actions github-actions bot added documentation Improvements or additions to documentation build flink labels Apr 1, 2026
@weiqingy
Copy link
Copy Markdown
Contributor Author

weiqingy commented Apr 1, 2026

Hi @Tartarus0zm, the implementation PR for #1856 is ready for review.

It implements the five classes from the approved Rev 3 design: FlinkNodeConverter, FlinkRexNodeConverter, FlinkAggCallConverter, FlinkNodeConverterFactory, and ConverterContext. This PR only includes the framework layer and does not add any concrete converters yet.

To help with the review, I also included:

  • docs/PR-AURON-1856/AURON-1856-DESIGN.md
  • docs/reviewhelper/AURON-1856/01-converter-framework.md

These markdown files are only for review support and will be removed after the review is complete.

Could you please take a look when you have a chance? Thanks!

@weiqingy weiqingy force-pushed the AURON-1856-impl branch 4 times, most recently from f732361 to d6ae3b4 Compare April 1, 2026 06:07
Copy link
Copy Markdown
Contributor

@Tartarus0zm Tartarus0zm left a comment

Choose a reason for hiding this comment

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

thanks for your contributions!
I left a few comments, PTAL

Add five foundational classes in auron-flink-planner that form the
expression-level converter framework for Flink's native query acceleration:

- FlinkNodeConverter<T>: generic base interface (getNodeClass, isSupported, convert)
- FlinkRexNodeConverter: sub-interface for Calcite RexNode expressions
- FlinkAggCallConverter: sub-interface for Calcite AggregateCall aggregates
- FlinkNodeConverterFactory: singleton registry with separate rexConverterMap
  and aggConverterMap, typed registration and fail-safe dispatch
- ConverterContext: immutable holder for input schema (RowType), Flink config,
  Auron config, and classloader

This is framework-only — no concrete converter implementations are included.
Follow-up issues will add RexLiteral, RexInputRef, RexCall, and aggregate
converters that plug into this framework.

Closes apache#1856
@weiqingy
Copy link
Copy Markdown
Contributor Author

weiqingy commented Apr 1, 2026

thanks for your contributions! I left a few comments, PTAL

@Tartarus0zm Thanks for the review! Switched to org.slf4j.Logger / LoggerFactory in both the import and the two logging call sites. Updated and pushed.

@Tartarus0zm
Copy link
Copy Markdown
Contributor

@weiqingy LGTM, You can delete these Markdown files.

Per reviewer request, remove design doc and review helper files
from the PR. These were included for review purposes only.
@github-actions github-actions bot removed the documentation Improvements or additions to documentation label Apr 2, 2026
@weiqingy
Copy link
Copy Markdown
Contributor Author

weiqingy commented Apr 2, 2026

@weiqingy LGTM, You can delete these Markdown files.

Thanks @Tartarus0zm. The MD files have been removed.

Copy link
Copy Markdown
Contributor

@Tartarus0zm Tartarus0zm left a comment

Choose a reason for hiding this comment

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

thanks for your contribution again!
LGTM

@Tartarus0zm Tartarus0zm merged commit 9e48cc7 into apache:master Apr 2, 2026
123 checks passed
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.

Introduce Flink Node Converter Tools

2 participants