[ 
https://issues.apache.org/jira/browse/TINKERPOP-1583?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15843298#comment-15843298
 ] 

ASF GitHub Bot commented on TINKERPOP-1583:
-------------------------------------------

Github user spmallette commented on a diff in the pull request:

    https://github.com/apache/tinkerpop/pull/546#discussion_r98261970
  
    --- Diff: 
gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategyTest.java
 ---
    @@ -37,14 +37,8 @@
     import java.util.List;
     import java.util.Set;
     
    -import static org.apache.tinkerpop.gremlin.process.traversal.P.eq;
    -import static org.apache.tinkerpop.gremlin.process.traversal.P.gte;
    -import static org.apache.tinkerpop.gremlin.process.traversal.P.neq;
    -import static 
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.as;
    -import static 
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.limit;
    -import static 
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
    -import static 
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.select;
    -import static 
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.values;
    +import static org.apache.tinkerpop.gremlin.process.traversal.P.*;
    --- End diff --
    
    your IDE inserted a wildcard - could you please fix the formattng @twilmes 


> PathRetractionStrategy retracts keys that are actually needed
> -------------------------------------------------------------
>
>                 Key: TINKERPOP-1583
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1583
>             Project: TinkerPop
>          Issue Type: Bug
>          Components: process
>    Affects Versions: 3.2.3
>            Reporter: Geoff Reedy
>            Assignee: Ted Wilmes
>
> We've seen this specifically for labels used in the until modulator of repeat 
> but I suspect it happens for other modulators as well. Here's a test case:
> {code}
> graph = TinkerGraph.open()
> g = graph.traversal()
> g.addV().as("first").repeat(addE("next").to(addV()).inV()).times(5).addE("next").to(select("first")).iterate()
> g.V().limit(1).as('z').out().repeat(store('seen').out().where(without('seen'))).until(where(eq('z')))
> {code}
> complains there is no z-key
> I tired to fix it myself and submit a pull request but I found the 
> implementation of PathRetractionStrategy confusing.
> One thing I noticed is that it seems the set of labels a step needs present 
> in order to work properly is determined external to the steps and that code 
> includes a lot of type-tests. If that logic were pushed down into the step 
> implementations I think fixing the repeat case would be easier and it would 
> be possible for extension steps to work properly with this strategy 
> (currently it seems they can't because of the closed-world assumption 
> inherent in the type-casing).



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

Reply via email to