Jark Wu created FLINK-14540:
-------------------------------

             Summary: Rethink of TableSource#explainSource()
                 Key: FLINK-14540
                 URL: https://issues.apache.org/jira/browse/FLINK-14540
             Project: Flink
          Issue Type: Improvement
          Components: Table SQL / API
            Reporter: Jark Wu


In FLINK-12399 and FLINK-14132, the returned String of 
{{TableSource#explainSource}} is used as part of digest of {{TableScan}}. User 
have to give the correct digest for projectable or filterable or limitable 
sources when pushdown has been tried. They have to overwrite 
{{TableSource#explainSource()}} to reflect such changes. 

However, I have some concerns about this:
1) such important restriction is not mentioned in the Javadoc of 
{{TableSource#explainSource()}}, {{ProjectableTableSouce}} and 
{{FilterableTableSource}}.
2) It pushes some dirty work to users which can be done by the framework, it 
makes connectors more difficult to be developed **correctly** (by reflecting 
all the push-downed information correctly).
3) the explainTerm/digest format of source maybe not unified and fully 
described.

Regarding how to generate digest by planner, I think we can put the push-downed 
information in {{TableSourceTable}} (e.g. we already put {{selectedFields}} in 
it), and generate the digest using {{TableSourceTable}}. 

But I may miss something that we have to push the changes to explainSource. We 
can discuss this under this JIRA issue.




--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to