Barry Oglesby created GEODE-2124:
------------------------------------

             Summary: 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
            Reporter: Barry Oglesby


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