[ https://issues.apache.org/jira/browse/CALCITE-5271?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17609899#comment-17609899 ]
Mou Wu commented on CALCITE-5271: --------------------------------- I mean you should check: {code:java} // code placeholder @Test void testFloor() { expr("FLOOR(TIMESTAMP '2022-08-01' TO Year)") .withDialect(POSTGRESQL) .ok("FLOOR(TIMESTAMP '2022-08-01 00:00:00' TO YEAR)"); } {code} it pass. If you want to compile sql and convert to sql back, you should see testFloor in RelToSqlConverterTest. > Error while unparsing FLOOR function using Postgres dialect > ----------------------------------------------------------- > > Key: CALCITE-5271 > URL: https://issues.apache.org/jira/browse/CALCITE-5271 > Project: Calcite > Issue Type: Bug > Reporter: Parag Jain > Assignee: Mou Wu > Priority: Minor > > Using Calcite(1.30.0) to parse this query - select FLOOR(TIMESTAMP > '2022-08-01' TO Year) > Parsing is successful but while doing > `toSqlString(PostgresqlSqlDialect.DEFAULT).getSql()`. on the parsed *SqlNode* > getting following exception - > > {code:java} > Request failed: java.lang.ClassCastException: class > org.apache.calcite.sql.SqlIntervalQualifier cannot be cast to class > org.apache.calcite.sql.SqlLiteral > at > org.apache.calcite.sql.dialect.PostgresqlSqlDialect.unparseCall(PostgresqlSqlDialect.java:128) > at org.apache.calcite.sql.SqlCall.unparse(SqlCall.java:126) > at > org.apache.calcite.sql.pretty.SqlPrettyWriter$FrameImpl.list2(SqlPrettyWriter.java:1303) > at > org.apache.calcite.sql.pretty.SqlPrettyWriter$FrameImpl.list(SqlPrettyWriter.java:1283) > at > org.apache.calcite.sql.pretty.SqlPrettyWriter.list(SqlPrettyWriter.java:1080) > at > org.apache.calcite.sql.SqlSelectOperator.unparse(SqlSelectOperator.java:154) > at org.apache.calcite.sql.SqlDialect.unparseCall(SqlDialect.java:460) > at > org.apache.calcite.sql.dialect.PostgresqlSqlDialect.unparseCall(PostgresqlSqlDialect.java:137) > at org.apache.calcite.sql.SqlSelect.unparse(SqlSelect.java:261) > at org.apache.calcite.sql.SqlNode.toSqlString(SqlNode.java:156) > at org.apache.calcite.sql.SqlNode.toSqlString(SqlNode.java:178) > at org.apache.calcite.sql.SqlNode.toSqlString(SqlNode.java:187){code} > Looks like a bug as the "Year" token gets parsed to SqlIntervalQualifier but > expectation is of SqlLiteral. Here's a > [PR|https://github.com/apache/calcite/pull/2897] with test case to reproduce > the issue. -- This message was sent by Atlassian Jira (v8.20.10#820010)