[ https://issues.apache.org/jira/browse/CALCITE-2198?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16382514#comment-16382514 ]
Julian Hyde commented on CALCITE-2198: -------------------------------------- This isn't a "bug". It is a feature request, and I don't agree that the feature is necessary. If you create a BINARY or VARBINARY literal, Calcite requires a value of type ByteString. Just supply one of those. (ByteString is better than byte[] because it is immutable and implements Comparable.) See RexLiteral.valueMatchesType for what is acceptable for each type. > ClassCastException in RexBuilder when makeLiteral for BINARY and VARBINARY > -------------------------------------------------------------------------- > > Key: CALCITE-2198 > URL: https://issues.apache.org/jira/browse/CALCITE-2198 > Project: Calcite > Issue Type: Bug > Components: core > Reporter: Hequn Cheng > Assignee: Julian Hyde > Priority: Major > > Currently, makeLiteral for {{BINARY}} and {{VARBINARY}} will throw > {{ClassCastException}} when value type is {{byte[]}}: > {code:java} > java.lang.ClassCastException: [B cannot be cast to > org.apache.calcite.avatica.util.ByteString > at org.apache.calcite.rex.RexBuilder.makeLiteral(RexBuilder.java:1336) > at > org.apache.calcite.test.RexProgramTest.testSimplifyCastLiteral(RexProgramTest.java:1567){code} > The exception can be reproduced by the following test case(in > RexProgramTest.testSimplifyCastLiteral()): > {code:java} > literals.add((RexLiteral) > rexBuilder.makeLiteral(new byte[] {1, 2, -34, 0, -128}, > typeFactory.createSqlType(SqlTypeName.BINARY, 5), false));{code} > To avoid this exception we have to add support for type of {{byte[]}}. One > choice is to convert {{byte[]}} to {{ByteString}} in {{RexBuilder.clean()}}. -- This message was sent by Atlassian JIRA (v7.6.3#76005)