[ 
https://issues.apache.org/jira/browse/CALCITE-3340?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16931705#comment-16931705
 ] 

Rui Wang commented on CALCITE-3340:
-----------------------------------

{code:java}
Is it required that table-valued functions extend 
SqlTableValueFunctionWindowingOperator? I don't think so. I'm not sure that a 
"windowing operator" is a thing that Calcite cares about.
{code}

During prototype, I found at least it's required to overwrite *SqlOperator. 
argumentMustBeScalar* to mark table parameter is not scalar(because the table 
parameter is not scalar, which matters in validator). A child class to 
overwrite that function will be required. For built-in table-valued functions, 
if there is a table parameter, it will need to extend this child class. The 
class name does not really matter though.

{code:java}
I am a bit surprised that TUMBLE appears in switch statements alongside 
OTHER_FUNCTION. Do we currently require user-defined table functions to be of 
type OTHER_FUNCTION?
{code}
I think so.  My understanding is user-defined table functions will be 
"UnresolvedFunction" and eventually falls into "OTHER_FUNCTION" (Calcite's 
parser and validator are very complicated. I wouldn't be surprised if I am 
wrong on this answer).


I will address other comments in the next version of PR which can pass tests. 
Will let you know once I finish the work.


> Make TUMBLE be accepted as an operand for "FROM TABLE()" in validator
> ---------------------------------------------------------------------
>
>                 Key: CALCITE-3340
>                 URL: https://issues.apache.org/jira/browse/CALCITE-3340
>             Project: Calcite
>          Issue Type: Sub-task
>            Reporter: Rui Wang
>            Assignee: Rui Wang
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> The goal of this JIRA is to generate a logical plan for the following query:
> {code:java}
> SELECT *
> FROM TABLE(TUMBLE(
> TABLE ORDERS,
> INTERVAL '10' MINUTE))
> {code}
> This SQL query does not have DESCRIPTOR included, which is being tracked and 
> discussed by CALCITE-3339.
> I expect we should generate a logical plan from this query that is similar to 
> the following:
> {code:java}
> LogicalProject(ROWTIME=[$0], ID=[$1], PRODUCT=[$2], UNITS=[$3], wstart=[$4], 
> wend=[$5])
>   LogicalTableFunctionScan(invocation=[TUMBLE($3, 60000:INTERVAL MINUTE)], 
> rowType=[RecordType(TIMESTAMP(0) ROWTIME, INTEGER ID, VARCHAR(10) PRODUCT, 
> INTEGER UNITS, TIMESTAMP(0) wstart, TIMESTAMP(0) wend)])
>     LogicalProject(ROWTIME=[$0], ID=[$1], PRODUCT=[$2], UNITS=[$3])
>       LogicalTableScan(table=[[ORINOCO, ORDERS]])
> {code}



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

Reply via email to