[ https://issues.apache.org/jira/browse/CALCITE-3629?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Rui Wang reassigned CALCITE-3629: --------------------------------- Assignee: Rui Wang > Table-valued function implementor interface > ------------------------------------------- > > Key: CALCITE-3629 > URL: https://issues.apache.org/jira/browse/CALCITE-3629 > Project: Calcite > Issue Type: Sub-task > Reporter: Rui Wang > Assignee: Rui Wang > Priority: Major > > The current implementation of TUMBLE is the following: > {code:java} > if (isTumble()) { > // create expressions and blockstatement > } else { > // other table function scan enumerable implementation. > } > {code} > This style is less extensible. We will add more builtin table-valued function > implementation and we shouldn't add more if-else with complicated > implementation. > A better practice is in RexImpTable, each operator register its implementor, > and then the code will be becomes: > {code:java} > if (implementor defined) { > return implementor.implement(...) > } else { > // default table function scan enumerable implementation for those that does > not have implementor. > } > {code} > The current implementor[1] is not enough for table-valued function as > table-valued function need both inputPhysType and outPhysType, and potential > other params to implement itself. > Another condition is we might need more table-valued function implementations > to abstract a common interface. > [1]: > https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/adapter/enumerable/CallImplementor.java#L38 -- This message was sent by Atlassian Jira (v8.3.4#803005)