Page properties | ||
---|---|---|
|
Status
Current state: "Under DiscussionDiscarded"
Discussion thread: http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-Long-term-goal-of-making-flink-table-Scala-free-td22761.html
...
Setup new module structure
Move all files to their corresponding modules as they are. No migration happens at this stage. Modules might contain both Scala and Java classes. Classes that should be placed in `flink-table-spi` but are in Scala so far remain in `flink-table-api-base` planner` for now.Migrate UDF classes to `flink-table-spi`common`
All UDF interfaces have little dependencies to other classes.Migrate `flink-table-runtime` classes
All runtime classes have little dependencies to other classes.Migrate main Table API classes to `flink-table-api-base`
The most important API classes such as TableEnvironments and Table are exposing a lot of protected methods in Java. Migrating those classes makes the API clean and the implementation ready for a major refactoring for the new catalog support. We can also think about a separation of interface and implementation; e.g. `Table` & `TableImpl`. However, the current API design makes this difficult as we are using constructors of interfaces `new Table(...)`.Migrate connector classes to `flink-table-api-spi`*`
Once we implemented improvements to the unified connector interface, we can also migrate the classes. Among others, it requires a refactoring of the timestamp extractors which are the biggest blockers because they transitively depending on expressions.Migrate remaining `flink-table-spi` common` classes
While doing tasks for the new external catalog integration or improvements to the unified connector interfaces, we can migrate the remaining classes.Migrate remaining `flink-table-api-base` classes
This includes expressions, logical nodes etc.Load Scala in `flink-table-planner` into a separate classloader
After this stage, `flink-table` would be Scala-free from a dependency perspective.Migrate `flink-table-planner` classes
Final goal of Scala-free `flink-table`.
...