Rui Wang created CALCITE-3629: --------------------------------- Summary: 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
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)