[ 
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)

Reply via email to