Hi,

This is on 3.2.3

I have been investigating why
`DedupTest.g_V_asXaX_repeatXbothX_timesX3X_emit_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_byXidX_foldX_selectXvaluesX_unfold_dedup`
fails on Sqlg. It is a fairly recently added test.

My investigation so far has narrowed the problem to the
`PathRetractionStrategy`

On the modern graph,

        GraphTraversal<Vertex, Map<Vertex, Collection<Vertex>>>
traversal = g.traversal()
                .V().as("a")
                .out().as("b")
                .<Vertex, Collection<Vertex>>group().by(select("a"))
                .by(select("b"));
        printTraversalForm(traversal);

Outputs the following on TinkerGraph

pre-strategy:[GraphStep(vertex,[])@[a], VertexStep(OUT,vertex)@[b],
GroupStep([SelectOneStep(a)],[SelectOneStep(b)])]
  post-strategy:[TinkerGraphStep(vertex,[])@[a],
VertexStep(OUT,vertex)@[b], GroupStep([SelectOneStep(a),
NoOpBarrierStep(2500)],[SelectOneStep(b), NoOpBarrierStep(2500)])]

And on Sqlg
   pre-strategy:[GraphStep(vertex,[])@[a], VertexStep(OUT,vertex)@[b],
GroupStep([SelectOneStep(a)],[SelectOneStep(b)])]
  post-strategy:[SqlgGraphStepCompiled(vertex,[])@[b],
GroupStep([SelectOneStep(a)],[SelectOneStep(b)])]

The difference being that Sqlg does not have the `NoOpBarrierStep` inserted.

For TinkerGraph the `NoOpBarrierStep` is being inserted in the
`PathRetractionStrategy` on line 113
However this does not happen for Sqlg as Sqlg's GraphStep has
`TraverRequirement.PATH` as a requirement which prevents
`PathRetractionStrategy` from doing what it does.

Is this a bug of sorts? Should Sqlg be adding in the `NoOpBarrierStep`?

Thanks
Pieter

Reply via email to