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

Julian Hyde commented on CALCITE-5143:
--------------------------------------

We should support the same time units in EXTRACT, DATEADD, DATEDIFF. So this 
issue should apply to all of these functions.

This change should be made in all parsers (including Core and Babel).

Yes, please change the summary of this case.

> Planner#parse fails to parse a function when HOUR is passed as an argument
> --------------------------------------------------------------------------
>
>                 Key: CALCITE-5143
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5143
>             Project: Calcite
>          Issue Type: Bug
>          Components: babel
>    Affects Versions: 1.30.0
>            Reporter: Mitsunori Komatsu
>            Assignee: Jiajun Xie
>            Priority: Major
>              Labels: pull-request-available
>
> I'm trying to parse and rewrite some SQL dialects including SQL Server which 
> supports some functions that receive HOUR as an argument using. But Calcite's 
> Planner#parse can't handle this kind of SQL.
> {code:java}
> FrameworkConfig config = Frameworks.newConfigBuilder().build();
> Planner planner = Frameworks.getPlanner(config);
> System.out.println(planner.parse("SELECT DATEDIFF(HOUR, NOW(), NOW())")); 
> {code}
> {code:java}
> Exception in thread "main" org.apache.calcite.sql.parser.SqlParseException: 
> Incorrect syntax near the keyword 'HOUR' at line 2, column 21.
> Was expecting one of:
>     "ALL" ...
>     "ARRAY" ...
>     "CASE" ...
>    :
>     "GROUPING" ...
>     "HOUR" ...
>     "HOUR" "(" ...
>     "*" ...
>     ")" ...
>     
>     at 
> org.apache.calcite.sql.parser.impl.SqlParserImpl.convertException(SqlParserImpl.java:389)
>     at 
> org.apache.calcite.sql.parser.impl.SqlParserImpl.normalizeException(SqlParserImpl.java:153)
>     at 
> org.apache.calcite.sql.parser.SqlParser.handleException(SqlParser.java:145)
>     at org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:160)
>     at org.apache.calcite.sql.parser.SqlParser.parseStmt(SqlParser.java:185)
>     at org.apache.calcite.prepare.PlannerImpl.parse(PlannerImpl.java:214)
>     at org.apache.calcite.tools.Planner.parse(Planner.java:50) {code}
> This issue happens with other date/time keyword-ish ones like YEAR.
> I guess it happens because HOUR and YEAR are reserved keywords.
> Is this an expected behavior? If so, is there any workaround?



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to