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)

Reply via email to