Dimitry Solovyov created TINKERPOP-1932: -------------------------------------------
Summary: Traversal results are implicitly deduplicated when using bytecode Key: TINKERPOP-1932 URL: https://issues.apache.org/jira/browse/TINKERPOP-1932 Project: TinkerPop Issue Type: Bug Components: process Affects Versions: 3.3.1 Reporter: Dimitry Solovyov Sending the same query as Gremlin-Groovy and as bytecode yields different results, if the result set contains duplicates. Duplicates are preserved in results from StandardOpProcessor, but dropped in TraversalOpProcessor. Deduplication seems to happen when traversers are bulked using a [TraverserSet|https://github.com/apache/tinkerpop/blob/3.3.1/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/TraverserSet.java] in [TraverserIterator|https://github.com/apache/tinkerpop/blob/3.3.1/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/TraverserIterator.java]. TraverserSet intentionally collects traversers in a hash map. Here is a test that reproduces the issue: {code:java} Client groovyClient = Cluster.open().connect(); List<Long> groovyResult = groovyClient.submit("g.inject(1, 1)").stream().map(Result::getLong).collect(toList()); groovyClient.close(); Client bytecodeClient = Cluster.open().connect().alias("g"); Bytecode bytecode = __.inject(1, 1).asAdmin().getBytecode(); List<Long> bytecodeResult = bytecodeClient.submit(bytecode).stream().map(Result::getLong).collect(toList()); bytecodeClient.close(); assertEquals(groovyResult, asList(1L, 1L)); assertEquals(bytecodeResult, asList(1L, 1L)); {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)