Order by on Group of Long values causes ClassCastException

33 views
Skip to first unread message

Martin Tapp

unread,
Aug 16, 2017, 1:17:03 PM8/16/17
to Gremlin-users
Hi,

I have the following gremlin query where I'm trying to sum an edge property of type Long (BigInteger). The query runs fine except when I add an order by clause.

top_5_of_some_long_value_sorted =
  g.V().hasLabel("people").group().by("some_long_id").by(outE("knows").values("some_long_value").sum())
    .order(local).by(values, decr) // Adding this clause causes java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
    .limit(local, 5)

I even tried .<Long,Long>group() and .<Long>sum() with the same cast exception. Seems the order by gets an Integer comparator instead of a Long for some unknown reason.

Any idea if that's a bug or how I can prevent a full client-side sort?

Thanks

Here's the full stack trace using DSE Graph 5.0:
java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
	at java.lang.Integer.compareTo(Integer.java:52)
	at java.util.Collections$ReverseComparator.compare(Collections.java:5117)
	at java.util.Collections$ReverseComparator.compare(Collections.java:5108)
	at org.apache.tinkerpop.gremlin.process.traversal.Order$2.compare(Order.java:43)
	at org.apache.tinkerpop.gremlin.util.function.ChainedComparator.compare(ChainedComparator.java:63)
	at java.util.TimSort.countRunAndMakeAscending(TimSort.java:360)
	at java.util.TimSort.sort(TimSort.java:234)
	at java.util.Arrays.sort(Arrays.java:1512)
	at java.util.ArrayList.sort(ArrayList.java:1454)
	at java.util.Collections.sort(Collections.java:175)
	at org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderLocalStep.sortMap(OrderLocalStep.java:149)
	at org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderLocalStep.map(OrderLocalStep.java:63)
	at org.apache.tinkerpop.gremlin.process.traversal.step.map.MapStep.processNextStart(MapStep.java:37)
	at org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.hasNext(AbstractStep.java:143)
	at org.apache.tinkerpop.gremlin.process.traversal.step.util.ExpandableStepIterator.next(ExpandableStepIterator.java:50)
	at org.apache.tinkerpop.gremlin.process.traversal.step.map.MapStep.processNextStart(MapStep.java:36)
	at org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.hasNext(AbstractStep.java:143)
	at org.apache.tinkerpop.gremlin.process.traversal.step.util.ExpandableStepIterator.hasNext(ExpandableStepIterator.java:42)
	at com.datastax.bdp.graph.impl.tinkerpop.optimizer.TraverserPrefetchBuffer.fetchNext(TraverserPrefetchBuffer.java:83)
	at com.datastax.bdp.graph.impl.tinkerpop.optimizer.TraverserIdentityPrefetchBuffer.processNextStart(TraverserIdentityPrefetchBuffer.java:35)
	at com.datastax.bdp.graph.impl.tinkerpop.optimizer.DsegPropertyLoadStep.processNextStart(DsegPropertyLoadStep.java:63)
	at org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.next(AbstractStep.java:128)
	at org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.next(AbstractStep.java:38)
	at org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal.next(DefaultTraversal.java:193)
	at java_util_Iterator$next.call(Unknown Source)
	at Script100.run(Script100.groovy:5)
	at org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:812)
	at org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:525)
	at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:233)
	at org.apache.tinkerpop.gremlin.groovy.engine.ScriptEngines.eval(ScriptEngines.java:120)
	at org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor.lambda$eval$53(GremlinExecutor.java:314)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:748)
Reply all
Reply to author
Forward
0 new messages