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

Rui Wang commented on CALCITE-3955:
-----------------------------------

Ok. I have spent some time to investigate how to wrap the first argument into a 
CURSOR. The main problem I have seen so far is *WHERE* to wrap it as a CURSOR. 
if we do it in "StandardConvertletTable", it seems too late based on how 
CURSOR/subquery is registered in Calcite. 

The best place might be "SqlValidatorImpl.performUnconditionalRewrites", where 
we can wrap "table t" to CURSOR. However, it is possible that a query could use 
"FROM TUMBLE((SELECT ...) ...)", in which the subquery won't fall into the 
"table t" rewrite path.

I don't have a good idea so far to implement this CURSOR fix. [~danny0405] I 
would love to see your opnion when you get a chance to look at this problem.

> Remove the first operand of RexCall from SqlWindowTableFunction
> ---------------------------------------------------------------
>
>                 Key: CALCITE-3955
>                 URL: https://issues.apache.org/jira/browse/CALCITE-3955
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.22.0
>            Reporter: Danny Chen
>            Assignee: Danny Chen
>            Priority: Major
>             Fix For: 1.23.0
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> In CALCITE-3382, we introduced TUMBLE window function to replace the 
> deprecated group tumble window.
> But for query
> {code:sql}
> select *
> from table(tumble(table Shipments, descriptor(rowtime), INTERVAL '1' MINUTE))
> {code}
> the outputs plan is
> {code:xml}
> LogicalProject(ORDERID=[$0], ROWTIME=[$1], window_start=[$2], window_end=[$3])
>   LogicalTableFunctionScan(invocation=[TUMBLE($1, DESCRIPTOR($1), 
> 60000:INTERVAL MINUTE)], rowType=[RecordType(INTEGER ORDERID, TIMESTAMP(0) 
> ROWTIME, TIMESTAMP(0) window_start, TIMESTAMP(0) window_end)])
>     LogicalProject(ORDERID=[$0], ROWTIME=[$1])
>       LogicalTableScan(table=[[CATALOG, SALES, SHIPMENTS]])
> {code}
> The first operand of TUMBLE rex call is always the last input field, but 
> actually it represents the source table which is the input rel node.
> This issue remove the first operand from the RexCall because it is useless 
> and confusing.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to