Barry Kelly created CALCITE-6254:
------------------------------------

             Summary: Enable calling table functions without requiring TABLE() 
wrapper
                 Key: CALCITE-6254
                 URL: https://issues.apache.org/jira/browse/CALCITE-6254
             Project: Calcite
          Issue Type: Improvement
          Components: core
    Affects Versions: 1.36.0
            Reporter: Barry Kelly


Currently, when selecting from a table function, the function call needs to be 
wrapped in TABLE() like this:

{{    SELECT * FROM TABLE(table_func('args'));}}

Many dialects (SQL Server, PostgreSQL, BigQuery) do not require this:

{{    SELECT * FROM table_func('args');}}

The current Calcite grammar can be extended to permit this syntax without 
conflicting with other productions.

There is a close call with the dynamic columns feature used by 
[Phoenix|https://phoenix.apache.org/dynamic_columns.html[]:|https://phoenix.apache.org/dynamic_columns.html]

{{    SELECT * FROM EventLog(lastGCTime TIME)}}

It can be disambiguated with 3 tokens of lookahead, seeing past the '(' and 
identifier to the presence of a type production. The table extension clause for 
dynamic columns requires at least one field, so the empty case of '()' is not 
ambiguous either.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to