Hi,

The following query no longer works on 3.2.4

    @Test
    public void testOptionalWithOrderBy() {
        final TinkerGraph g = TinkerGraph.open();
        Vertex a1 = g.addVertex(T.label, "A", "name", "a1");
        Vertex b1 = g.addVertex(T.label, "B", "name", "b1");
        Vertex b2 = g.addVertex(T.label, "B", "name", "b2");
        Vertex b3 = g.addVertex(T.label, "B", "name", "b3");
        Vertex c1 = g.addVertex(T.label, "C", "name", "c1");
        Vertex c2 = g.addVertex(T.label, "C", "name", "c2");
        Vertex c3 = g.addVertex(T.label, "C", "name", "c3");
        a1.addEdge("ab", b1, "order", 3);
        a1.addEdge("ab", b2, "order", 2);
        a1.addEdge("ab", b3, "order", 1);
        b1.addEdge("bc", c1, "order", 3);
        b1.addEdge("bc", c2, "order", 2);
        b1.addEdge("bc", c3, "order", 1);
        GraphTraversal<Vertex, Vertex> traversal = g.traversal().V(a1.id())
                .optional(
                        __.outE("ab").as("ab").otherV().as("vb")
                                .optional(
                                       
__.outE("bc").as("bc").otherV().as("vc")
                                )
                )
                .order().by(__.select("ab").by("order"),
Order.incr).by(__.select("bc").by("order"), Order.incr);
        while (traversal.hasNext()) {
            System.out.println(traversal.next().<String>value("name"));
        }
    }

On 3.2.3 it returns

b3
b2
c3
c2
c1

On 3.2.4 it throws the following exception,

java.lang.IllegalArgumentException: The provided traverser does not map
to a value: v[6]->[SelectOneStep(bc,value(order))]
    at
org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil.apply(TraversalUtil.java:45)
    at
org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderGlobalStep.createProjectedTraverser(OrderGlobalStep.java:155)
    at
org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderGlobalStep.processAllStarts(OrderGlobalStep.java:74)
    at
org.apache.tinkerpop.gremlin.process.traversal.step.util.CollectingBarrierStep.processNextStart(CollectingBarrierStep.java:108)
    at
org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.hasNext(AbstractStep.java:143)
    at
org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal.hasNext(DefaultTraversal.java:184)

Has the semantics changed or is it a bug?

Thanks
Pieter

Reply via email to