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

Danny Chen commented on CALCITE-4545:
-------------------------------------

For the old version parser before CALCITE-2282, the parser did can identifies 
some builtin no-arg functions, but only for operators from 
{{SqlStdOperatorTable}}.

When unparsing a {{SqlIdentifier}}, we can decide whether the {{SqlIdentifier}} 
is simple and whether it is quoted in the original SQL statement, one way to 
fix is that we never apply the quotes for a simple {{SqlIdentifier}} if it is 
not quoted in the original SQL, because that may changes the semantics based on 
the fact that a quoted {{SqlIdentifier}}
can never parse to a function.

> Unparse a new function of FUNCTION_ID syntax will be quoted
> -----------------------------------------------------------
>
>                 Key: CALCITE-4545
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4545
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>            Reporter: Jark Wu
>            Priority: Major
>             Fix For: 1.26.0, 1.27.0
>
>
> In Flink, we would like to introduce some new functions of FUNCTION_ID 
> syntax, e.g. {{CURRENT_ROW_TIMESTAMP}}. However, when unparsing this new 
> function, we will get the quoted string {{`CURRENT_ROW_TIMESTAMP`}} which 
> can't be executed anymore, because Calcite think it is a column reference. 
> The root cause of it is {{org.apache.calcite.sql.SqlIdentifier#unparse}} 
> calls {{org.apache.calcite.sql.SqlUtil#unparseSqlIdentifierSyntax}} where it 
> uses a static Calcite {{SqlStdOperatorTable.instance()}} instead of a 
> user-defined operator table. Therefore, it thinks it's not a sql function and 
> unparse it with quotes. 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to