added a more stringent requirement. Only the root traversal can get an end-cap 
barrier. Added more test cases.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/135af8e1
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/135af8e1
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/135af8e1

Branch: refs/heads/master
Commit: 135af8e113bbd2cf02135b622a713f5eac3d5f19
Parents: 7c026ac
Author: Marko A. Rodriguez <okramma...@gmail.com>
Authored: Wed Oct 12 12:01:15 2016 -0600
Committer: Marko A. Rodriguez <okramma...@gmail.com>
Committed: Wed Oct 12 12:01:15 2016 -0600

----------------------------------------------------------------------
 .../traversal/strategy/optimization/LazyBarrierStrategy.java    | 5 ++++-
 .../strategy/optimization/LazyBarrierStrategyTest.java          | 2 ++
 2 files changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/135af8e1/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategy.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategy.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategy.java
index f0398a2..5ca5ff2 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategy.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategy.java
@@ -29,6 +29,7 @@ import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.NoOpBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileSideEffectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ProfileStep;
 import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
 import 
org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
@@ -83,7 +84,9 @@ public final class LazyBarrierStrategy extends 
AbstractTraversalStrategy<Travers
                     (step instanceof GraphStep &&
                             (i > 0 || ((GraphStep) step).getIds().length >= 
BIG_START_SIZE ||
                                     (((GraphStep) step).getIds().length == 0 
&& !(step.getNextStep() instanceof HasStep))))) {
-                if (foundFlatMap && !labeledPath && !(step.getNextStep() 
instanceof Barrier)) {
+                if (foundFlatMap && !labeledPath &&
+                        !(step.getNextStep() instanceof Barrier) &&
+                        (!(step.getNextStep() instanceof EmptyStep) || 
step.getTraversal().getParent() instanceof EmptyStep)) {
                     final Step noOpBarrierStep = new 
NoOpBarrierStep<>(traversal, MAX_BARRIER_SIZE);
                     TraversalHelper.copyLabels(step, noOpBarrierStep, true);
                     TraversalHelper.insertAfterStep(noOpBarrierStep, step, 
traversal);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/135af8e1/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategyTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategyTest.java
 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategyTest.java
index f1738e2..dfa9665 100644
--- 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategyTest.java
+++ 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategyTest.java
@@ -97,6 +97,8 @@ public class LazyBarrierStrategyTest {
                 
{__.out().as("a").out().as("b").in().where(P.neq("a")).out().out(), 
__.out().as("a").out().as("b").in().where(P.neq("a")).out().out(), 
Collections.emptyList()},
                 
{__.out().as("a").out().as("b").in().where(P.neq("a")).out().select("b").out(), 
__.out().as("a").out().as("b").in().where(P.neq("a")).barrier(2500).out().select("b").barrier(2500).out().barrier(SIZE),
 Collections.singletonList(PathRetractionStrategy.instance())},
                 
{__.out().as("a").out().as("b").in().where(P.neq("a")).out().select("b").out().out(),
 
__.out().as("a").out().as("b").in().where(P.neq("a")).barrier(2500).out().select("b").barrier(2500).out().barrier(SIZE).out().barrier(SIZE),
 Collections.singletonList(PathRetractionStrategy.instance())},
+                
{__.V().out().out().groupCount().by(__.out().out().out()).out(), 
__.V().out().barrier(SIZE).out().groupCount().by(__.out().out().barrier(SIZE).out()).out().barrier(SIZE),
 Collections.emptyList()},
+                
{__.V().out().out().groupCount().by(__.out().out().out()).out().as("a"), 
__.V().out().barrier(SIZE).out().groupCount().by(__.out().out().barrier(SIZE).out()).out().barrier(SIZE).as("a"),
 Collections.emptyList()}
         });
     }
 }

Reply via email to