[ https://issues.apache.org/jira/browse/CALCITE-2198?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Hequn Cheng updated CALCITE-2198: --------------------------------- Description: 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()}}. was: 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:1271) at org.apache.calcite.rex.RexBuilder.makeLiteral(RexBuilder.java:1251){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()}}. > 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)