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)

Reply via email to