[ https://issues.apache.org/jira/browse/CALCITE-5271?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17607025#comment-17607025 ]
Parag Jain commented on CALCITE-5271: ------------------------------------- My understanding is Floor(Timestamp to TIMEUNIT) is not supported by postgres natively but then why is Calcite handling this syntax in unparse call, so either this should be removed or supported fully. > 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)