Marko A. Rodriguez created TINKERPOP-1480:
---------------------------------------------

             Summary: PathRestractionStrategy shouldn't NoOpBarrierStep if it 
will be the end step.
                 Key: TINKERPOP-1480
                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1480
             Project: TinkerPop
          Issue Type: Improvement
          Components: process
    Affects Versions: 3.2.2
            Reporter: Marko A. Rodriguez


{code}
gremlin> 
g.V().filter(has('name','marko')).match(__.as('a').has('age',32),__.as('a').out('knows').as('b')).where('a',neq('b')).select('a').by('name').explain()
==>Traversal Explanation
==========================================================================================================================================================================================================================================================================================================================
Original Traversal                 [GraphStep(vertex,[]), 
TraversalFilterStep([HasStep([name.eq(marko)])]), 
MatchStep(AND,[[MatchStartStep(a), HasStep([age.eq(32)]), MatchEndStep], 
[MatchStartStep(a), VertexStep(OUT,[knows],vertex), MatchEndStep(b)]]), 
WherePredicateStep(a,neq(b)), SelectOneStep(a,value(name))]

ConnectiveStrategy           [D]   [GraphStep(vertex,[]), 
TraversalFilterStep([HasStep([name.eq(marko)])]), 
MatchStep(AND,[[MatchStartStep(a), HasStep([age.eq(32)]), MatchEndStep], 
[MatchStartStep(a), VertexStep(OUT,[knows],vertex), MatchEndStep(b)]]), 
WherePredicateStep(a,neq(b)), SelectOneStep(a,value(name))]
IncidentToAdjacentStrategy   [O]   [GraphStep(vertex,[]), 
TraversalFilterStep([HasStep([name.eq(marko)])]), 
MatchStep(AND,[[MatchStartStep(a), HasStep([age.eq(32)]), MatchEndStep], 
[MatchStartStep(a), VertexStep(OUT,[knows],vertex), MatchEndStep(b)]]), 
WherePredicateStep(a,neq(b)), SelectOneStep(a,value(name))]
AdjacentToIncidentStrategy   [O]   [GraphStep(vertex,[]), 
TraversalFilterStep([HasStep([name.eq(marko)])]), 
MatchStep(AND,[[MatchStartStep(a), HasStep([age.eq(32)]), MatchEndStep], 
[MatchStartStep(a), VertexStep(OUT,[knows],vertex), MatchEndStep(b)]]), 
WherePredicateStep(a,neq(b)), SelectOneStep(a,value(name))]
InlineFilterStrategy         [O]   [GraphStep(vertex,[]), 
HasStep([name.eq(marko)])@[a], HasStep([age.eq(32)]), 
MatchStep(AND,[[MatchStartStep(a), VertexStep(OUT,[knows],vertex), 
MatchEndStep(b)]]), WherePredicateStep(a,neq(b)), SelectOneStep(a,value(name))]
MatchPredicateStrategy       [O]   [GraphStep(vertex,[]), 
HasStep([name.eq(marko)])@[a], HasStep([age.eq(32)]), 
MatchStep(AND,[[MatchStartStep(a), VertexStep(OUT,[knows],vertex), 
MatchEndStep(b)], [MatchStartStep(a), WherePredicateStep(neq(b)), 
MatchEndStep]]), SelectOneStep(a,value(name))]
FilterRankingStrategy        [O]   [GraphStep(vertex,[]), 
HasStep([name.eq(marko)])@[a], HasStep([age.eq(32)]), 
MatchStep(AND,[[MatchStartStep(a), VertexStep(OUT,[knows],vertex), 
MatchEndStep(b)], [MatchStartStep(a), WherePredicateStep(neq(b)), 
MatchEndStep]]), SelectOneStep(a,value(name))]
RepeatUnrollStrategy         [O]   [GraphStep(vertex,[]), 
HasStep([name.eq(marko)])@[a], HasStep([age.eq(32)]), 
MatchStep(AND,[[MatchStartStep(a), VertexStep(OUT,[knows],vertex), 
MatchEndStep(b)], [MatchStartStep(a), WherePredicateStep(neq(b)), 
MatchEndStep]]), SelectOneStep(a,value(name))]
RangeByIsCountStrategy       [O]   [GraphStep(vertex,[]), 
HasStep([name.eq(marko)])@[a], HasStep([age.eq(32)]), 
MatchStep(AND,[[MatchStartStep(a), VertexStep(OUT,[knows],vertex), 
MatchEndStep(b)], [MatchStartStep(a), WherePredicateStep(neq(b)), 
MatchEndStep]]), SelectOneStep(a,value(name))]
PathRetractionStrategy       [O]   [GraphStep(vertex,[]), 
HasStep([name.eq(marko)])@[a], HasStep([age.eq(32)]), 
MatchStep(AND,[[MatchStartStep(a), VertexStep(OUT,[knows],vertex), 
MatchEndStep(b)], [MatchStartStep(a), WherePredicateStep(neq(b)), 
MatchEndStep]]), SelectOneStep(a,value(name)), NoOpBarrierStep(2500)]
TinkerGraphStepStrategy      [P]   [TinkerGraphStep(vertex,[name.eq(marko), 
age.eq(32)])@[a], MatchStep(AND,[[MatchStartStep(a), 
VertexStep(OUT,[knows],vertex), MatchEndStep(b)], [MatchStartStep(a), 
WherePredicateStep(neq(b)), MatchEndStep]]), SelectOneStep(a,value(name)), 
NoOpBarrierStep(2500)]
ProfileStrategy              [F]   [TinkerGraphStep(vertex,[name.eq(marko), 
age.eq(32)])@[a], MatchStep(AND,[[MatchStartStep(a), 
VertexStep(OUT,[knows],vertex), MatchEndStep(b)], [MatchStartStep(a), 
WherePredicateStep(neq(b)), MatchEndStep]]), SelectOneStep(a,value(name)), 
NoOpBarrierStep(2500)]
StandardVerificationStrategy [V]   [TinkerGraphStep(vertex,[name.eq(marko), 
age.eq(32)])@[a], MatchStep(AND,[[MatchStartStep(a), 
VertexStep(OUT,[knows],vertex), MatchEndStep(b)], [MatchStartStep(a), 
WherePredicateStep(neq(b)), MatchEndStep]]), SelectOneStep(a,value(name)), 
NoOpBarrierStep(2500)]

Final Traversal                    [TinkerGraphStep(vertex,[name.eq(marko), 
age.eq(32)])@[a], MatchStep(AND,[[MatchStartStep(a), 
VertexStep(OUT,[knows],vertex), MatchEndStep(b)], [MatchStartStep(a), 
WherePredicateStep(neq(b)), MatchEndStep]]), SelectOneStep(a,value(name)), 
NoOpBarrierStep(2500)]
{code}

I don't think we should add the {{NoOpBarrierStep}} at the end. Need to think 
it through though...

[~spmallette]: GremlinServer tries to "bulk the stream" before sending back 
over the wire, right?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to