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);
}
});
}