[ https://issues.apache.org/jira/browse/CALCITE-5143?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17534132#comment-17534132 ]
Mitsunori Komatsu commented on CALCITE-5143: -------------------------------------------- [~jiajunbernoulli] I've not throughly checked all databases, but PostgreSQL seems to support the abbreviation [https://www.postgresql.org/docs/current/datatype-datetime.html#DATATYPE-INTERVAL-ISO8601-UNITS]. {code:java} postgres=# select extract (s from now()); date_part ----------- 23.592736 (1 row) {code} > 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 > Priority: Major > > 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)