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/06/17 23:21:42 UTC
[08/11] incubator-tinkerpop git commit: fixed a Scoping optimization
bug that happens in a paritcular situation of WhereStep
fixed a Scoping optimization bug that happens in a paritcular situation of WhereStep
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/ebb0fd69
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/ebb0fd69
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/ebb0fd69
Branch: refs/heads/master
Commit: ebb0fd69821857ecefecf9222983c2bd0e189650
Parents: 8f2f7f4
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Jun 17 13:52:21 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Wed Jun 17 15:21:18 2015 -0600
----------------------------------------------------------------------
.../gremlin/process/traversal/step/filter/WhereStep.java | 2 +-
.../traversal/strategy/finalization/ScopingStrategy.java | 5 ++++-
2 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ebb0fd69/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 6c5a219..6299cd9 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
@@ -145,7 +145,7 @@ public final class WhereStep<S> extends FilterStep<S> implements TraversalParent
@Override
public Set<String> getScopeKeys() {
- return this.scopeKeys;
+ return Collections.unmodifiableSet(this.scopeKeys);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ebb0fd69/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/ScopingStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/ScopingStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/ScopingStrategy.java
index 5f5ce9b..b5e8561 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/ScopingStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/ScopingStrategy.java
@@ -25,6 +25,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Scope;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereStep;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
@@ -49,7 +50,9 @@ public final class ScopingStrategy extends AbstractTraversalStrategy<TraversalSt
((Scoping) step).setScope(((Scoping) step.getPreviousStep()).recommendNextScope());
else if (Scope.global == ((Scoping) step).getScope() && step != traversal.getStartStep()) { // for Match(Where())
final Set<String> keys = ((Scoping) step).getScopeKeys();
- if (!keys.isEmpty() && !((Scoping) step).getScopeKeys().stream().filter(pathLabels::contains).findAny().isPresent())
+ if(keys.isEmpty() && step instanceof WhereStep)
+ ((Scoping) step).setScope(Scope.local);
+ else if (!keys.isEmpty() && !((Scoping) step).getScopeKeys().stream().filter(pathLabels::contains).findAny().isPresent())
((Scoping) step).setScope(Scope.local);
}
}