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 2016/10/03 14:09:26 UTC
tinkerpop git commit: made the recommended changes from @dkuppitz.
Repository: tinkerpop
Updated Branches:
refs/heads/TINKERPOP-1470 1389cd369 -> 7f04ebeed
made the recommended changes from @dkuppitz.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/7f04ebee
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/7f04ebee
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/7f04ebee
Branch: refs/heads/TINKERPOP-1470
Commit: 7f04ebeede121395ba389047ca98266dc5879289
Parents: 1389cd3
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Mon Oct 3 08:09:19 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Mon Oct 3 08:09:19 2016 -0600
----------------------------------------------------------------------
.../optimization/InlineFilterStrategy.java | 29 ++++++++------------
1 file changed, 12 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7f04ebee/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategy.java
index 820143a..8072ca0 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategy.java
@@ -42,6 +42,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Set;
@@ -75,24 +76,18 @@ public final class InlineFilterStrategy extends AbstractTraversalStrategy<Traver
boolean changed = true; // recursively walk child traversals trying to inline them into the current traversal line.
while (changed) {
changed = false;
- for (final FilterStep<?> step : TraversalHelper.getStepsOfAssignableClass(FilterStep.class, traversal)) {
- if (step instanceof HasStep && InlineFilterStrategy.processHasStep((HasStep) step, traversal))
- // has(a,b).has(c) --> has(a,b,c)
- changed = true;
- else if (step instanceof TraversalFilterStep && InlineFilterStrategy.processTraversalFilterStep((TraversalFilterStep) step, traversal))
- // filter(x.y) --> x.y
- changed = true;
- else if (step instanceof OrStep && InlineFilterStrategy.processOrStep((OrStep) step, traversal))
- // or(has(x,y),has(x,z)) --> has(x,y.or(z))
- changed = true;
- else if (step instanceof AndStep && InlineFilterStrategy.processAndStep((AndStep) step, traversal))
- // and(x,y) --> x.y
- changed = true;
+ final Iterator<FilterStep> filterStepIterator = TraversalHelper.getStepsOfAssignableClass(FilterStep.class, traversal).iterator();
+ while (!changed && filterStepIterator.hasNext()) {
+ final FilterStep<?> step = filterStepIterator.next();
+ changed = step instanceof HasStep && InlineFilterStrategy.processHasStep((HasStep) step, traversal) ||
+ step instanceof TraversalFilterStep && InlineFilterStrategy.processTraversalFilterStep((TraversalFilterStep) step, traversal) ||
+ step instanceof OrStep && InlineFilterStrategy.processOrStep((OrStep) step, traversal) ||
+ step instanceof AndStep && InlineFilterStrategy.processAndStep((AndStep) step, traversal);
}
- // match(as('a').has(key,value),...) --> as('a').has(key,value).match(...)
- if (traversal.getParent() instanceof EmptyStep) {
- for (final MatchStep<?, ?> step : TraversalHelper.getStepsOfClass(MatchStep.class, traversal)) {
- if (InlineFilterStrategy.processMatchStep(step, traversal))
+ if (!changed && traversal.getParent() instanceof EmptyStep) {
+ final Iterator<MatchStep> matchStepIterator = TraversalHelper.getStepsOfClass(MatchStep.class, traversal).iterator();
+ while (!changed && matchStepIterator.hasNext()) {
+ if (InlineFilterStrategy.processMatchStep(matchStepIterator.next(), traversal))
changed = true;
}
}