Mihai Budiu created CALCITE-6980:
------------------------------------
Summary: RelJson cannot serialize binary literals
Key: CALCITE-6980
URL: https://issues.apache.org/jira/browse/CALCITE-6980
Project: Calcite
Issue Type: Bug
Components: core
Affects Versions: 1.39.0
Reporter: Mihai Budiu
Adding the following test to RelWriterTest causes an
UnsupportedOperationException:
{code:java}
@Test void testVarbinary() {
final Function<RelBuilder, RelNode> relFn = b ->
b.scan("EMP")
.project(b.getRexBuilder().makeBinaryLiteral(new ByteString(new
byte[0])))
.build();
relFn(relFn)
.assertThatJson(isLinux("X"));
}
{code}
Here is the stack trace:
{code}
java.lang.UnsupportedOperationException: type not serializable: (type
org.apache.calcite.avatica.util.ByteString)
at org.apache.calcite.rel.externalize.RelJson.toJson(RelJson.java:498)
at org.apache.calcite.rel.externalize.RelJson.toJson(RelJson.java:594)
at org.apache.calcite.rel.externalize.RelJson.toJson(RelJson.java:456)
at org.apache.calcite.rel.externalize.RelJson.toJson(RelJson.java:468)
at
org.apache.calcite.rel.externalize.RelJsonWriter.put(RelJsonWriter.java:102)
at
org.apache.calcite.rel.externalize.RelJsonWriter.explain_(RelJsonWriter.java:85)
at
org.apache.calcite.rel.externalize.RelJsonWriter.done(RelJsonWriter.java:135)
at
org.apache.calcite.rel.AbstractRelNode.explain(AbstractRelNode.java:252)
at org.apache.calcite.plan.RelOptUtil.dumpPlan(RelOptUtil.java:2145)
{code}
The error is also clearly not a good error, since the type technically is
serializable.
The error is from RelJson.toJson; there is no case in the switch statement
handling it.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)