Thanks, now I know Sqlg has indeed been bugged. I am loosing the label
after the emit().as("b").

Cheers
Pieter

On 25/10/2016 21:29, Marko Rodriguez wrote:
> Here is a simple test. Remove PathRetractionStrategy from TinkerGraph 
> traversal and see what you get? Do you get what Sqlg returns or the same as 
> if with PathRetractionStrategy.
>
> E.g.
>
> graph = TinkerFactory.createModern();
> g = graph.traversal().withoutStrategies(PathRetractionStrategy.class);
> g.V().the().traversal().to().test()
>
> If you get the same answer without PathRetractionStrategy, then you know that 
> Sqlg is bugged.
>
> HTH,
> Marko.
>
> http://markorodriguez.com
>
>
>
>> On Oct 24, 2016, at 2:21 PM, pieter-gmail <pieter.mar...@gmail.com> wrote:
>>
>> Ok apologies. I thought I spotted the difference and simplified the
>> gremlin too much to highlight what I thought I saw. The above mentioned
>> queries are returning the same result in Sqlg as TinkerGraph.
>>
>> Here is what is not working.
>>
>>        final TinkerGraph g = TinkerFactory.createModern();
>>        GraphTraversal<Vertex, Map<Vertex, Collection<Vertex>>>
>> traversal = g.traversal()
>>                .V().as("a")
>>                .repeat(both()).times(3).emit().as("b")
>>                .<Vertex, Collection<Vertex>>group().by(select("a"));
>>        printTraversalForm(traversal);
>>        while (traversal.hasNext()) {
>>            Map<Vertex, Collection<Vertex>> vertexMap = traversal.next();
>>            for (Vertex vertex : vertexMap.keySet()) {
>>                Collection<Vertex> coll = vertexMap.get(vertex);
>>                System.out.println("key: " + vertex.value("name") + ",
>> value: " + coll.size());
>>            }
>>        }
>>
>> For this Sqlg has the same result as TinkerGraph.
>>
>> TinkerGraph
>>
>> post-strategy:[TinkerGraphStep(vertex,[])@[a],
>> RepeatStep([VertexStep(BOTH,vertex),
>> RepeatEndStep],until(loops(3)),emit(true))@[b],
>> GroupStep([SelectOneStep(a), NoOpBarrierStep(2500)],[FoldStep])]
>>
>> Sqlg
>>
>> post-strategy:[SqlgGraphStepCompiled(vertex,[])@[sqlgPathFakeLabel],
>> GroupStep([SelectOneStep(a)],[FoldStep])]
>>
>> key: marko, value: 27
>> key: vadas, value: 11
>> key: lop, value: 27
>> key: josh, value: 27
>> key: ripple, value: 11
>> key: peter, value: 11
>>
>> Adding in the extra by()
>>
>>        final TinkerGraph g = TinkerFactory.createModern();
>>        GraphTraversal<Vertex, Map<Vertex, Collection<Vertex>>>
>> traversal = g.traversal()
>>                .V().as("a")
>>                .repeat(both()).times(3).emit().as("b")
>>                .<Vertex, Collection<Vertex>>group().by(select("a"))
>>                .by(select("b").dedup().order().by(T.id).fold());
>>        printTraversalForm(traversal);
>>        while (traversal.hasNext()) {
>>            Map<Vertex, Collection<Vertex>> vertexMap = traversal.next();
>>            for (Vertex vertex : vertexMap.keySet()) {
>>                Collection<Vertex> coll = vertexMap.get(vertex);
>>                System.out.println("key: " + vertex.value("name") + ",
>> value: " + coll.size());
>>            }
>>        }
>>
>> TinkerGraph prints
>>
>> post-strategy:[TinkerGraphStep(vertex,[])@[a],
>> RepeatStep([VertexStep(BOTH,vertex),
>> RepeatEndStep],until(loops(3)),emit(true))@[b],
>> GroupStep([SelectOneStep(a), NoOpBarrierStep(2500)],[SelectOneStep(b),
>> DedupGlobalStep, OrderGlobalStep([[id, incr]]), FoldStep])]
>>
>> key: marko, value: 6
>> key: vadas, value: 6
>> key: lop, value: 6
>> key: josh, value: 6
>> key: ripple, value: 6
>> key: peter, value: 6
>>
>> and Sqlg
>>
>> post-strategy:[SqlgGraphStepCompiled(vertex,[])@[sqlgPathFakeLabel],
>> GroupStep([SelectOneStep(a)],[SelectOneStep(b), DedupGlobalStep,
>> OrderGlobalStep([[id, incr]]), FoldStep])]
>>
>> key: marko, value: 0
>> key: ripple, value: 0
>> key: peter, value: 0
>> key: lop, value: 0
>> key: josh, value: 0
>> key: vadas, value: 0
>>
>> The difference being the NoOpBarrierStep but I am not sure if that is
>> the culprit or not.
>>
>> Thanks
>> Pieter
>>
>>
>>
>>
>>
>>
>> On 24/10/2016 21:31, Marko Rodriguez wrote:
>>> Hi Pieter,
>>>
>>> What are the two answers --- TinkerGraph and Sqlg for the respective test 
>>> traversal?
>>>
>>> (I suspect the test is bad because group() pushes traversers through with 
>>> bulks and all so the test might just add to a collection without adding 
>>> respecting bulks. Probably should change that test regardless to do like a 
>>> count or something instead).
>>>
>>> Marko.
>>>
>>> http://markorodriguez.com
>>>
>>>
>>>
>>>> On Oct 24, 2016, at 12:57 PM, pieter-gmail <pieter.mar...@gmail.com> wrote:
>>>>
>>>> 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