[ https://issues.apache.org/jira/browse/FLINK-11067?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16777857#comment-16777857 ]
Hequn Cheng edited comment on FLINK-11067 at 2/26/19 12:08 PM: --------------------------------------------------------------- Hi [~twalthr] [~sunjincheng121] , I have invested deeper into this issue and have some problems to confirm with you. Would be great to have your suggestions. *Dependency Jiras* This issue may be blocked by the following tasks. 1.FLINK-11068 converting Table to an interface. 2.FLINK-11532 Port ExternalCatalog in order to put `registerExternalCatalog()` in `TableEnvironment` 3.FLINK-11516 Port StreamTableDescriptor, BatchTableDescriptor to API module in order to put `connect()` in `StreamTableEnvironment` or `BatchTableEnvironment` *TableConfig* TableConfig should be exist in API module as it is used to create TableEnvironment, such as `BatchTableEnvironment.create(env, new TableConfig());`. However, currently, TableConfig depends on Calcite. To make it calcite free, we can rename the current TableConfig to `InternalTableConfig` and add another api TableConfig. The `InternalTableConfig` extends `TableConfig`. In `TableConfig`, there are no calcite related methods. Users who want to set calcite config could use the config in the following way: {code:java} tableEnv.getConfig.asInstanceOf[InternalTableConfig].setCalciteConfig(cc) {code} *TableEnvironment interface* There are 5 TableEnvironment interfaces: {code:java} // in table-api-java-bridge org.apche.flink.table.api.java.BatchTableEnvironment org.apche.flink.table.api.java.StreamTableEnvironment // in table-api-scala-bridge org.apche.flink.table.api.scala.BatchTableEnvironment org.apche.flink.table.api.scala.StreamTableEnvironment // in table-api-java org.apche.flink.table.api.TableEnvironment {code} Take `java.BatchTableEnvironment` as an example, it contains a static method `static StreamTableEnvironment create(StreamExecutionEnvironment executionEnvironment, TableConfig tableConfig)`. The `create` method uses reflection to create a TableEnvironment instance now. We can replace reflection strategy to discovery strategy when introducing Planner. was (Author: hequn8128): Hi [~twalthr], I have invested deeper into this issue and have some problems to confirm with you. Would be great to have your suggestions. *Dependency Jiras* This issue may be blocked by the following tasks. 1.FLINK-11068 converting Table to an interface. 2.FLINK-11532 Port ExternalCatalog in order to put `registerExternalCatalog()` in `TableEnvironment` 3.FLINK-11516 Port StreamTableDescriptor, BatchTableDescriptor to API module in order to put `connect()` in `StreamTableEnvironment` or `BatchTableEnvironment` *TableConfig* TableConfig should be exist in API module as it is used to create TableEnvironment, such as `BatchTableEnvironment.create(env, new TableConfig());`. However, currently, TableConfig depends on Calcite. To make it calcite free, we can rename the current TableConfig to `InternalTableConfig` and add another api TableConfig. The `InternalTableConfig` extends `TableConfig`. In `TableConfig`, there are no calcite related methods. Users who want to set calcite config could use the config in the following way: {code:java} tableEnv.getConfig.asInstanceOf[InternalTableConfig].setCalciteConfig(cc) {code} *TableEnvironment interface* There are 5 TableEnvironment interfaces: {code:java} // in table-api-java-bridge org.apche.flink.table.api.java.BatchTableEnvironment org.apche.flink.table.api.java.StreamTableEnvironment // in table-api-scala-bridge org.apche.flink.table.api.scala.BatchTableEnvironment org.apche.flink.table.api.scala.StreamTableEnvironment // in table-api-java org.apche.flink.table.api.TableEnvironment {code} Take `java.BatchTableEnvironment` as an example, it contains a static method `static StreamTableEnvironment create(StreamExecutionEnvironment executionEnvironment, TableConfig tableConfig)`. The `create` method uses reflection to create a TableEnvironment instance now. We can replace reflection strategy to discovery strategy when introducing Planner. > Convert TableEnvironments to interfaces > --------------------------------------- > > Key: FLINK-11067 > URL: https://issues.apache.org/jira/browse/FLINK-11067 > Project: Flink > Issue Type: New Feature > Components: Table API & SQL > Reporter: Timo Walther > Assignee: Hequn Cheng > Priority: Major > > A more detailed description can be found in > [FLIP-32|https://cwiki.apache.org/confluence/display/FLINK/FLIP-32%3A+Restructure+flink-table+for+future+contributions]. > This task includes porting {{TableEnvironment}}, {{StreamTableEnvironment}}, > {{BatchTableEnvironment}} to Java interfaces. API-breaking changes should not > be necessary anymore as they should have been resolved by sibling issues. > Some refactoring and clean up might be necessary. -- This message was sent by Atlassian JIRA (v7.6.3#76005)