You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2015/05/15 19:28:37 UTC

incubator-tinkerpop git commit: WhereStep smart about start and end keys so as to not get the path if it is not needed. Updated SubgraphStrategy test respectively.

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/master 76beb5d4b -> 33d814558


WhereStep smart about start and end keys so as to not get the path if it is not needed. Updated SubgraphStrategy test respectively.


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

Branch: refs/heads/master
Commit: 33d814558169a015fc729acb521a4be6796d9755
Parents: 76beb5d
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri May 15 11:28:33 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri May 15 11:28:33 2015 -0600

----------------------------------------------------------------------
 .../gremlin/process/traversal/step/filter/WhereStep.java | 11 +++++++----
 .../traversal/strategy/decoration/SubgraphStrategy.java  | 10 +++++-----
 2 files changed, 12 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/33d81455/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java
index 55fe85b..eb9b83a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java
@@ -69,7 +69,10 @@ public final class WhereStep<S> extends FilterStep<S> implements TraversalParent
         final Object startObject;
         final Object endObject;
 
-        if (Scope.local == this.scope) {
+        if (!this.hasStartAndEndKeys()) {
+            startObject = traverser.get();
+            endObject = null;
+        } else if (Scope.local == this.scope) {
             final Map<String, Object> map = (Map<String, Object>) traverser.get();
             startObject = null == this.startKey ? traverser.get() : map.get(this.startKey);
             endObject = null == this.endKey ? null : map.get(this.endKey);
@@ -83,7 +86,7 @@ public final class WhereStep<S> extends FilterStep<S> implements TraversalParent
     }
 
     @Override
-    public List<Traversal.Admin<?,?>> getLocalChildren() {
+    public List<Traversal.Admin<?, ?>> getLocalChildren() {
         return this.predicate.getBiPredicate() instanceof BiPredicateTraversal ? Collections.singletonList(((BiPredicateTraversal) this.predicate.getBiPredicate()).getTraversal()) : Collections.emptyList();
     }
 
@@ -102,7 +105,7 @@ public final class WhereStep<S> extends FilterStep<S> implements TraversalParent
 
     @Override
     public Set<TraverserRequirement> getRequirements() {
-        return this.getSelfAndChildRequirements(Scope.local == this.scope || !this.usesPathOrSideEffects() ?
+        return this.getSelfAndChildRequirements(Scope.local == this.scope || !this.hasStartAndEndKeys() ?
                 TraverserRequirement.OBJECT : TraverserRequirement.OBJECT, TraverserRequirement.PATH, TraverserRequirement.SIDE_EFFECTS);
     }
 
@@ -115,7 +118,7 @@ public final class WhereStep<S> extends FilterStep<S> implements TraversalParent
         return this.scope;
     }
 
-    private boolean usesPathOrSideEffects() {
+    private boolean hasStartAndEndKeys() {
         return null != this.endKey && null != this.startKey;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/33d81455/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SubgraphStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SubgraphStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SubgraphStrategy.java
index 8488d51..21c14ce 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SubgraphStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SubgraphStrategy.java
@@ -89,7 +89,7 @@ public final class SubgraphStrategy extends AbstractTraversalStrategy<TraversalS
             vertexStepsToInsertFilterAfter.addAll(TraversalHelper.getStepsOfAssignableClass(AddVertexStartStep.class, traversal));
             vertexStepsToInsertFilterAfter.addAll(graphSteps.stream().filter(GraphStep::returnsVertex).collect(Collectors.toList()));
 
-            vertexStepsToInsertFilterAfter.forEach(s -> TraversalHelper.insertAfterStep(new WhereStep<>(traversal, Scope.global, vertexPredicate.asAdmin().clone()), s, traversal));
+            vertexStepsToInsertFilterAfter.forEach(s -> TraversalHelper.insertAfterStep(new WhereStep<>(traversal, Scope.local, vertexPredicate.asAdmin().clone()), s, traversal));
         }
 
         if (edgePredicate != null) {
@@ -99,13 +99,13 @@ public final class SubgraphStrategy extends AbstractTraversalStrategy<TraversalS
             edgeStepsToInsertFilterAfter.addAll(graphSteps.stream().filter(GraphStep::returnsEdge).collect(Collectors.toList()));
             edgeStepsToInsertFilterAfter.addAll(vertexSteps.stream().filter(VertexStep::returnsEdge).collect(Collectors.toList()));
 
-            edgeStepsToInsertFilterAfter.forEach(s -> TraversalHelper.insertAfterStep(new WhereStep<>(traversal, Scope.global, edgePredicate.asAdmin().clone()), s, traversal));
+            edgeStepsToInsertFilterAfter.forEach(s -> TraversalHelper.insertAfterStep(new WhereStep<>(traversal, Scope.local, edgePredicate.asAdmin().clone()), s, traversal));
         }
 
         // explode g.V().out() to g.V().outE().inV() only if there is an edge predicate otherwise
         vertexSteps.stream().filter(VertexStep::returnsVertex).forEach(s -> {
             if (null == edgePredicate)
-                TraversalHelper.insertAfterStep(new WhereStep<>(traversal, Scope.global, vertexPredicate.asAdmin().clone()), s, traversal);
+                TraversalHelper.insertAfterStep(new WhereStep<>(traversal, Scope.local, vertexPredicate.asAdmin().clone()), s, traversal);
             else {
                 final VertexStep replacementVertexStep = new VertexStep(traversal, Edge.class, s.getDirection(), s.getEdgeLabels());
                 Step intermediateFilterStep = null;
@@ -116,10 +116,10 @@ public final class SubgraphStrategy extends AbstractTraversalStrategy<TraversalS
 
                 TraversalHelper.replaceStep(s, replacementVertexStep, traversal);
                 TraversalHelper.insertAfterStep(intermediateFilterStep, replacementVertexStep, traversal);
-                TraversalHelper.insertAfterStep(new WhereStep<>(traversal, Scope.global, edgePredicate.asAdmin().clone()), replacementVertexStep, traversal);
+                TraversalHelper.insertAfterStep(new WhereStep<>(traversal, Scope.local, edgePredicate.asAdmin().clone()), replacementVertexStep, traversal);
 
                 if (vertexPredicate != null)
-                    TraversalHelper.insertAfterStep(new WhereStep<>(traversal, Scope.global, vertexPredicate.asAdmin().clone()), intermediateFilterStep, traversal);
+                    TraversalHelper.insertAfterStep(new WhereStep<>(traversal, Scope.local, vertexPredicate.asAdmin().clone()), intermediateFilterStep, traversal);
             }
         });
     }