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)