[ https://issues.apache.org/jira/browse/GEODE-2124?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15684264#comment-15684264 ]
ASF subversion and git services commented on GEODE-2124: -------------------------------------------------------- Commit 6e5013102927099a725282b6bad5d64a79152fab in incubator-geode's branch refs/heads/develop from [~huynhja] [ https://git-wip-us.apache.org/repos/asf?p=incubator-geode.git;h=6e50131 ] GEODE-2124: Queries that invoke StructSet addAll fail with ClassCastException * Fixed addAll method in StructSet to call the overridden add method > Queries that invoke StructSet addAll fail with ClassCastException > ----------------------------------------------------------------- > > Key: GEODE-2124 > URL: https://issues.apache.org/jira/browse/GEODE-2124 > Project: Geode > Issue Type: Bug > Components: querying > Reporter: Barry Oglesby > Assignee: Jason Huynh > Attachments: Portfolio.java, Position.java > > > A query like this fails with the exception below: > {noformat} > select distinct oP.ID, oP.status, oP.getType from /data oP where > element(select distinct p.ID, p.status, p.getType from /data p where p.ID = > oP.ID).status = 'inactive' > {noformat} > {noformat} > Caused by: java.lang.ClassCastException: > org.apache.geode.cache.query.internal.StructImpl cannot be cast to > [Ljava.lang.Object; > at > org.apache.geode.cache.query.internal.StructSet$ObjectArrayHashingStrategy.hashCode(StructSet.java:70) > at > it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet.add(ObjectOpenCustomHashSet.java:248) > at > it.unimi.dsi.fastutil.objects.AbstractObjectCollection.addAll(AbstractObjectCollection.java:71) > at > it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet.addAll(ObjectOpenCustomHashSet.java:235) > at > org.apache.geode.cache.query.internal.StructSet.addAll(StructSet.java:248) > at > org.apache.geode.cache.query.internal.ResultsCollectionWrapper.addAll(ResultsCollectionWrapper.java:157) > at > org.apache.geode.cache.query.internal.Functions.element(Functions.java:103) > at > org.apache.geode.cache.query.internal.CompiledFunction.call(CompiledFunction.java:84) > at > org.apache.geode.cache.query.internal.CompiledFunction.evaluate(CompiledFunction.java:59) > at > org.apache.geode.cache.query.internal.CompiledPath.evaluate(CompiledPath.java:92) > at > org.apache.geode.cache.query.internal.CompiledComparison.evaluate(CompiledComparison.java:82) > at > org.apache.geode.cache.query.internal.CompiledSelect.doNestedIterations(CompiledSelect.java:787) > at > org.apache.geode.cache.query.internal.CompiledSelect.doNestedIterations(CompiledSelect.java:857) > at > org.apache.geode.cache.query.internal.CompiledSelect.doIterationEvaluate(CompiledSelect.java:715) > at > org.apache.geode.cache.query.internal.CompiledSelect.evaluate(CompiledSelect.java:553) > at > org.apache.geode.cache.query.internal.CompiledSelect.evaluate(CompiledSelect.java:57) > at > org.apache.geode.cache.query.internal.DefaultQuery.executeUsingContext(DefaultQuery.java:559) > at > org.apache.geode.internal.cache.PRQueryProcessor.executeQueryOnBuckets(PRQueryProcessor.java:367) > at > org.apache.geode.internal.cache.PRQueryProcessor.executeSequentially(PRQueryProcessor.java:331) > at > org.apache.geode.internal.cache.PRQueryProcessor.executeQuery(PRQueryProcessor.java:121) > at > org.apache.geode.internal.cache.PartitionedRegionQueryEvaluator.executeQueryOnLocalNode(PartitionedRegionQueryEvaluator.java:909) > at > org.apache.geode.internal.cache.PartitionedRegionQueryEvaluator.executeQueryOnRemoteAndLocalNodes(PartitionedRegionQueryEvaluator.java:327) > at > org.apache.geode.internal.cache.PartitionedRegionQueryEvaluator.queryBuckets(PartitionedRegionQueryEvaluator.java:445) > at > org.apache.geode.internal.cache.PartitionedRegion.doExecuteQuery(PartitionedRegion.java:1792) > at > org.apache.geode.internal.cache.PartitionedRegion.executeQuery(PartitionedRegion.java:1721) > at > org.apache.geode.cache.query.internal.DefaultQuery.execute(DefaultQuery.java:342) > at > org.apache.geode.cache.query.internal.DefaultQuery.execute(DefaultQuery.java:300) > at > org.apache.geode.internal.cache.tier.sockets.BaseCommandQuery.processQueryUsingParams(BaseCommandQuery.java:121) > at > org.apache.geode.internal.cache.tier.sockets.BaseCommandQuery.processQuery(BaseCommandQuery.java:65) > at > org.apache.geode.internal.cache.tier.sockets.command.Query.cmdExecute(Query.java:92) > at > org.apache.geode.internal.cache.tier.sockets.BaseCommand.execute(BaseCommand.java:141) > at > org.apache.geode.internal.cache.tier.sockets.ServerConnection.doNormalMsg(ServerConnection.java:777) > at > org.apache.geode.internal.cache.tier.sockets.ServerConnection.doOneMessage(ServerConnection.java:905) > at > org.apache.geode.internal.cache.tier.sockets.ServerConnection.run(ServerConnection.java:1161) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at > org.apache.geode.internal.cache.tier.sockets.AcceptorImpl$1$1.run(AcceptorImpl.java:519) > at java.lang.Thread.run(Thread.java:745) > {noformat} > The Collection being passed into the addAll method are the same in Geode and > GemFire 8.x: > Geode: > {noformat} > c=[struct(ID:648,status:inactive,getType:type1)]; class=class > java.util.HashSet > o=struct(ID:648,status:inactive,getType:type1); class=class > org.apache.geode.cache.query.internal.StructImpl > {noformat} > GemFire 8x: > {noformat} > c=[struct(ID:562,status:inactive,getType:type1)]; class=class > java.util.HashSet > o=struct(ID:562,status:inactive,getType:type1); class=class > com.gemstone.gemfire.cache.query.internal.StructImpl > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)