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