Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Page properties


ReasonSubsumed by the bigger vision described in FLIP-32.


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

...

  1. 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.

  2. Migrate UDF classes to `flink-table-spi`common`
    All UDF interfaces have little dependencies to other classes.

  3. Migrate `flink-table-runtime` classes
    All runtime classes have little dependencies to other classes.

  4. 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(...)`.

  5. 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.

  6. 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.

  7. Migrate remaining `flink-table-api-base` classes
    This includes expressions, logical nodes etc.

  8. Load Scala in `flink-table-planner` into a separate classloader
    After this stage, `flink-table` would be Scala-free from a dependency perspective.

  9. Migrate `flink-table-planner` classes
    Final goal of Scala-free `flink-table`.

...