[ 
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)

Reply via email to