[ https://issues.apache.org/jira/browse/CALCITE-1515?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15886589#comment-15886589 ]
Julian Hyde commented on CALCITE-1515: -------------------------------------- Sorry, I misread {{RexNode}} as {{RelNode}}. A table function is a {{RexCall}}, so its arguments are all {{RexNode}}s, even those that represent relational expressions. So, you convert a {{RelNode}} as a {{RexNode}} in order to pass it into the function. The convention is to use a {{RexInputRef}} whose ordinal is the number of {{CURSOR}} arguments to the current function seen so far, and whose type is the row type of the relational expression. To see how it works, put a breakpoint in {{SqlToRelConverterTest.convertCursor}} and run {{SqlToRelConverterTest#testCollectionTableWithCursorParam}}. > Support TableFunctionScan in RelBuilder > --------------------------------------- > > Key: CALCITE-1515 > URL: https://issues.apache.org/jira/browse/CALCITE-1515 > Project: Calcite > Issue Type: Bug > Affects Versions: 1.10.0 > Reporter: Anton Mushin > Assignee: Julian Hyde > Priority: Minor > > Calcite has a TableFunctionScan, which is a RelNode, takes a function, 0 or > more RelNode inputs, and 0 or more other arguments. > RelBuilder does not support TableFunctionScan yet. > add In RelBuilder TableFunctionScanFactory which will create > LogicalTableFunctionScan like as for LogicalTableScan and factory for others > RelNodes [ > [example|https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/tools/RelBuilder.java#L125] > ] > also adding a functionScan method, analogous to the scan method but for table > functions. -- This message was sent by Atlassian JIRA (v6.3.15#6346)