[
https://issues.apache.org/jira/browse/CALCITE-5330?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Steven Talbot updated CALCITE-5330:
-----------------------------------
Description:
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}
was:
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}
> 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
> Priority: Major
>
> 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)