You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2018/03/22 19:17:24 UTC
[22/26] tinkerpop git commit: CTR: Fixed strategy lifecycle issues
caused by `PathRetractionStrategy`. Fix taken from `tp33/`.
CTR: Fixed strategy lifecycle issues caused by `PathRetractionStrategy`. Fix taken from `tp33/`.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/8a76583c
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/8a76583c
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/8a76583c
Branch: refs/heads/TINKERPOP-1866
Commit: 8a76583c9e783e15b4cdf0167e6b32940a525c00
Parents: 373eba1
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Thu Mar 22 08:30:40 2018 -0700
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Thu Mar 22 08:30:40 2018 -0700
----------------------------------------------------------------------
.../strategy/decoration/SubgraphStrategy.java | 13 +++++++++++++
.../optimization/IncidentToAdjacentStrategy.java | 12 +++++++++++-
2 files changed, 24 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8a76583c/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 e0d260f..508e9c6 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
@@ -43,6 +43,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
import org.apache.tinkerpop.gremlin.structure.Direction;
@@ -148,6 +149,18 @@ public final class SubgraphStrategy extends AbstractTraversalStrategy<TraversalS
traversal.getStartStep().removeLabel(MARKER);
return;
}
+ for (final Step step : traversal.getSteps()) {
+ if (step instanceof TraversalParent) {
+ for (final Traversal.Admin t : ((TraversalParent) step).getLocalChildren()) {
+ this.apply(t);
+ t.getStartStep().addLabel(MARKER);
+ }
+ for (final Traversal.Admin t : ((TraversalParent) step).getGlobalChildren()) {
+ this.apply(t);
+ t.getStartStep().addLabel(MARKER);
+ }
+ }
+ }
//
final List<GraphStep> graphSteps = TraversalHelper.getStepsOfAssignableClass(GraphStep.class, traversal);
final List<VertexStep> vertexSteps = TraversalHelper.getStepsOfAssignableClass(VertexStep.class, traversal);
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8a76583c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategy.java
index 1c96cf8..8389112 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategy.java
@@ -23,6 +23,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Step;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.step.LambdaHolder;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.PathFilterStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.EdgeOtherVertexStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.EdgeVertexStep;
@@ -132,6 +133,10 @@ public final class IncidentToAdjacentStrategy extends AbstractTraversalStrategy<
final Collection<Pair<VertexStep, Step>> stepsToReplace = new ArrayList<>();
Step prev = null;
for (final Step curr : traversal.getSteps()) {
+ if (curr instanceof TraversalParent) {
+ ((TraversalParent) curr).getLocalChildren().forEach(this::apply);
+ ((TraversalParent) curr).getGlobalChildren().forEach(this::apply);
+ }
if (isOptimizable(prev, curr)) {
stepsToReplace.add(Pair.with((VertexStep) prev, curr));
}
@@ -148,4 +153,9 @@ public final class IncidentToAdjacentStrategy extends AbstractTraversalStrategy<
public Set<Class<? extends OptimizationStrategy>> applyPrior() {
return Collections.singleton(IdentityRemovalStrategy.class);
}
-}
+
+ @Override
+ public Set<Class<? extends OptimizationStrategy>> applyPost() {
+ return Collections.singleton(PathRetractionStrategy.class);
+ }
+}
\ No newline at end of file