[ https://issues.apache.org/jira/browse/FLINK-5185?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kurt Young updated FLINK-5185: ------------------------------ Description: As the components' relationship show in this design doc: https://docs.google.com/document/d/1PBnEbOcFHlEF1qGGAUgJvINdEXzzFTIRElgvs4-Tdeo/ We found it's been annoying for {{BatchTableSourceScan}} directly holding {{TableSourceTable}}, and refer to {{TableSource}} further. It's ok if the relationship is immutable, but when we want to change the {{TableSource}} when applying optimizations, it will cause some conflicts and misunderstanding. Since there is only one way to change {{TableSource}}, which is creating a new {{TableSourceTable}} to hold the new {{TableSource}}, and create a new {{BatchTableSourceScan}} pointing to the {{TableSourceTable}} which just created. The annoying part is the {{RelOptTable}} comes from the super class {{TableScan}} still holds the connection to the original {{TableSourceTable}} and {{TableSource}}. It will cause some misunderstanding, which one should the {{Scan}} rely to, and what's difference between these tables. Besides, {{TableSourceTable}} is not very useful in {{BatchTableSourceScan}}, the only thing {{Scan}} cares is the {{RowType}} it returns, since this is and should be decided by {{TableSource}}. So we can let {{BatchTableSourceScan}} directly holding {{TableSource}} instead of holding {{TableSourceTable}}.If some original information are needed, find table through {{RelOptTable}}. was: As the components' relationship show in this design doc: https://docs.google.com/document/d/1PBnEbOcFHlEF1qGGAUgJvINdEXzzFTIRElgvs4-Tdeo/ We found it's been annoying for {{BatchTableSourceScan}} directly holding {{TableSourceTable}}, and refer to {{TableSource}} further. It's ok if the relationship is immutable, but when we want to change the {{TableSource}} when applying optimizations, it will cause some conflicts and misunderstanding. Since there is only one way to change {{TableSource}}, which is creating a new {{TableSourceTable}} to hold the new {{TableSource}}, and create a new {{BatchTableSourceScan}} pointing to that {{TableSourceTable}} which just created. The annoying part is the {{RelOptTable}} comes from the super class {{TableScan}} still holds the connection to the original {{TableSourceTable}} and {{TableSource}}. It will cause some misunderstanding, which one should the {{Scan}} rely to, and what's difference between these tables. Besides, {{TableSourceTable}} is not very useful in {{BatchTableSourceScan}}, the only thing {{Scan}} cares is the {{RowType}} it returns, since this is and should be decided by {{TableSource}}. So we can let {{BatchTableSourceScan}} directly holding {{TableSource}} instead of holding {{TableSourceTable}}.If some original information are needed, find table through {{RelOptTable}}. > Decouple BatchTableSourceScan with TableSourceTable > --------------------------------------------------- > > Key: FLINK-5185 > URL: https://issues.apache.org/jira/browse/FLINK-5185 > Project: Flink > Issue Type: Improvement > Components: Table API & SQL > Affects Versions: 1.2.0 > Reporter: Kurt Young > Assignee: zhangjing > Priority: Minor > > As the components' relationship show in this design doc: > https://docs.google.com/document/d/1PBnEbOcFHlEF1qGGAUgJvINdEXzzFTIRElgvs4-Tdeo/ > We found it's been annoying for {{BatchTableSourceScan}} directly holding > {{TableSourceTable}}, and refer to {{TableSource}} further. It's ok if the > relationship is immutable, but when we want to change the {{TableSource}} > when applying optimizations, it will cause some conflicts and > misunderstanding. > Since there is only one way to change {{TableSource}}, which is creating a > new {{TableSourceTable}} to hold the new {{TableSource}}, and create a new > {{BatchTableSourceScan}} pointing to the {{TableSourceTable}} which just > created. The annoying part is the {{RelOptTable}} comes from the super class > {{TableScan}} still holds the connection to the original {{TableSourceTable}} > and {{TableSource}}. It will cause some misunderstanding, which one should > the {{Scan}} rely to, and what's difference between these tables. > Besides, {{TableSourceTable}} is not very useful in {{BatchTableSourceScan}}, > the only thing {{Scan}} cares is the {{RowType}} it returns, since this is > and should be decided by {{TableSource}}. So we can let > {{BatchTableSourceScan}} directly holding {{TableSource}} instead of holding > {{TableSourceTable}}.If some original information are needed, find table > through {{RelOptTable}}. -- This message was sent by Atlassian JIRA (v6.3.4#6332)