[
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)