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

Julian Hyde commented on CALCITE-3955:
--------------------------------------

It would help a lot if {{SqlGroupedWindowFunction}} extended 
{{SqlUserDefinedTableFunction}}. (I should have said this when I was reviewing 
CALCITE-3382.) Or, if they both implemented a new {{interface  
SqlTableFunction}}.

Note how [SqlToRelConverter asks a table function for its element 
type|https://github.com/apache/calcite/blob/f1c0756f33b79904ca3a429bbff79ebf0103ece9/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java#L2496-L2501];
 moving to {{SqlTableFunction}} would help with polymorphic table functions.

Currently there are two places in {{SqlToRelConverter}} that add to 
{{bb.cursors}}. If we added {{interface SqlTableFunction}} we could get that 
down to one, which would be awesome.

Run {{SqlToRelConverterTest.testCollectionTableWithCursorParam}} in a debugger 
and see how {{SqlToRelConverter.convertCursor}} gets called. The group window 
table functions should use the same code path.

> 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