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)