Steven Talbot created CALCITE-5330:
--------------------------------------

             Summary: TIMESTAMPDIFF call cannot work with RelJson
                 Key: CALCITE-5330
                 URL: https://issues.apache.org/jira/browse/CALCITE-5330
             Project: Calcite
          Issue Type: Bug
            Reporter: Steven Talbot


The TIMESTAMPDIFF function parses out with TimeUnit, rather than TimeUnitRange. 
Due to 
[https://github.com/apache/calcite/blob/2c30a56158cdd351d35725006bc1f76bb6aac75b/core/src/main/java/org/apache/calcite/sql/fun/SqlTimestampDiffFunction.java#L62,]
 you can't even workaround by subbing in TimeUnitRange after parse.

 

TimeUnit is incompatible with JSON serialization in RelJson, which uses 
RelEnumTypes to serialize enum values, and that only has TimeUnitRange 
[https://github.com/apache/calcite/blob/2c30a56158cdd351d35725006bc1f76bb6aac75b/core/src/main/java/org/apache/calcite/rel/externalize/RelEnumTypes.java#L79]

 

So attempting to serialize you get 

 
{noformat}
cannot serialize enum value to JSON: 
org.apache.calcite.avatica.util.TimeUnit.MINUTE
java.lang.AssertionError: cannot serialize enum value to JSON: 
org.apache.calcite.avatica.util.TimeUnit.MINUTE
    at 
org.apache.calcite.rel.externalize.RelEnumTypes.fromEnum(RelEnumTypes.java:102)
    at 
org.apache.calcite.rel.externalize.RelEnumTypes.fromEnum(RelEnumTypes.java:94)
    at org.apache.calcite.rel.externalize.RelJson.toJson(RelJson.java:491)
    at org.apache.calcite.rel.externalize.RelJson.toJson(RelJson.java:517)
    at org.apache.calcite.rel.externalize.RelJson.toJson(RelJson.java:390)
    at org.apache.calcite.rel.externalize.RelJson.toJson(RelJson.java:402)
    at 
org.apache.calcite.rel.externalize.RelJsonWriter.put(RelJsonWriter.java:90)
    at 
org.apache.calcite.rel.externalize.RelJsonWriter.explain_(RelJsonWriter.java:73){noformat}
 

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to