You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Rui Wang (Jira)" <ji...@apache.org> on 2019/12/24 20:26:00 UTC
[jira] [Created] (CALCITE-3629) Table-valued function implementor
interface
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)