You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by dk...@apache.org on 2018/03/13 21:56:19 UTC

[1/3] tinkerpop git commit: CTR: Implemented `Traversal::invalidateTraverserRequirements`.

Repository: tinkerpop
Updated Branches:
  refs/heads/master 345d81a8f -> 5ae66ed94


CTR: Implemented `Traversal::invalidateTraverserRequirements`.

This was necessary to allow traversal-mutating strategies (e.g. `SubgraphStrategy`) to invalidate the already cached traverser requirements.


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

Branch: refs/heads/master
Commit: bccff988dc713b9acdee9e9a3858e2c10b7de163
Parents: f9f3d4f
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Tue Mar 13 11:33:06 2018 -0700
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Tue Mar 13 13:17:43 2018 -0700

----------------------------------------------------------------------
 .../remote/traversal/AbstractRemoteTraversal.java        |  5 +++++
 .../tinkerpop/gremlin/process/traversal/Traversal.java   |  7 +++++++
 .../traversal/lambda/AbstractLambdaTraversal.java        |  7 +++++++
 .../traversal/strategy/decoration/SubgraphStrategy.java  | 11 ++++++++++-
 .../gremlin/process/traversal/util/DefaultTraversal.java |  5 +++++
 5 files changed, 34 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/bccff988/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/AbstractRemoteTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/AbstractRemoteTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/AbstractRemoteTraversal.java
index 0c6a7aa..480d1fc 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/AbstractRemoteTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/AbstractRemoteTraversal.java
@@ -88,6 +88,11 @@ public abstract class AbstractRemoteTraversal<S,E> implements RemoteTraversal<S,
     }
 
     @Override
+    public void invalidateTraverserRequirements() {
+        throw new UnsupportedOperationException("Remote traversals do not support this method");
+    }
+
+    @Override
     public void setSideEffects(final TraversalSideEffects sideEffects) {
         throw new UnsupportedOperationException("Remote traversals do not support this method");
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/bccff988/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
index 220c995..7a6ddce 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
@@ -426,6 +426,13 @@ public interface Traversal<S, E> extends Iterator<E>, Serializable, Cloneable, A
         public Set<TraverserRequirement> getTraverserRequirements();
 
         /**
+         * Invalidates the set of all {@link TraverserRequirement}s for this traversal.
+         */
+        public default void invalidateTraverserRequirements() {
+
+        };
+
+        /**
          * Call the {@link Step#reset} method on every step in the traversal.
          */
         public default void reset() {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/bccff988/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/AbstractLambdaTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/AbstractLambdaTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/AbstractLambdaTraversal.java
index 8f910a0..84e1896 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/AbstractLambdaTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/AbstractLambdaTraversal.java
@@ -184,6 +184,13 @@ public abstract class AbstractLambdaTraversal<S, E> implements Traversal.Admin<S
     }
 
     @Override
+    public void invalidateTraverserRequirements() {
+        if (null != this.bypassTraversal) {
+            this.bypassTraversal.invalidateTraverserRequirements();
+        }
+    }
+
+    @Override
     public int hashCode() {
         return null == this.bypassTraversal ? this.getClass().hashCode() : this.bypassTraversal.hashCode();
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/bccff988/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..7968363 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;
@@ -170,6 +171,7 @@ public final class SubgraphStrategy extends AbstractTraversalStrategy<TraversalS
         }
 
         // turn g.V().out() to g.V().outE().inV() only if there is an edge predicate otherwise
+        boolean invalidateTraverserRequirements = false;
         for (final VertexStep<?> step : vertexSteps) {
             if (step.returnsEdge())
                 continue;
@@ -177,7 +179,8 @@ public final class SubgraphStrategy extends AbstractTraversalStrategy<TraversalS
                 TraversalHelper.insertAfterStep(new TraversalFilterStep<>(traversal, (Traversal) this.vertexCriterion.clone()), step, traversal);
             } else {
                 final VertexStep<Edge> someEStep = new VertexStep<>(traversal, Edge.class, step.getDirection(), step.getEdgeLabels());
-                final Step<Edge, Vertex> someVStep = step.getDirection() == Direction.BOTH ?
+                final boolean addsPathRequirement;
+                final Step<Edge, Vertex> someVStep = (addsPathRequirement = step.getDirection() == Direction.BOTH) ?
                         new EdgeOtherVertexStep(traversal) :
                         new EdgeVertexStep(traversal, step.getDirection().opposite());
 
@@ -189,9 +192,15 @@ public final class SubgraphStrategy extends AbstractTraversalStrategy<TraversalS
                     TraversalHelper.insertAfterStep(new TraversalFilterStep<>(traversal, this.edgeCriterion.clone()), someEStep, traversal);
                 if (null != this.vertexCriterion)
                     TraversalHelper.insertAfterStep(new TraversalFilterStep<>(traversal, this.vertexCriterion.clone()), someVStep, traversal);
+
+                invalidateTraverserRequirements |= addsPathRequirement;
             }
         }
 
+        if (invalidateTraverserRequirements) {
+            traversal.invalidateTraverserRequirements();
+        }
+
         // turn g.V().properties() to g.V().properties().xxx
         // turn g.V().values() to g.V().properties().xxx.value()
         if (null != this.vertexPropertyCriterion) {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/bccff988/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
index 585a82b..57c271b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
@@ -166,6 +166,11 @@ public class DefaultTraversal<S, E> implements Traversal.Admin<S, E> {
     }
 
     @Override
+    public void invalidateTraverserRequirements() {
+        this.requirements = null;
+    }
+
+    @Override
     public List<Step> getSteps() {
         return this.unmodifiableSteps;
     }


[3/3] tinkerpop git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tinkerpop

Posted by dk...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tinkerpop


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

Branch: refs/heads/master
Commit: 5ae66ed941f6b8d8fc25fd235f55ea519b72d79f
Parents: 764824f 345d81a
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Tue Mar 13 14:56:06 2018 -0700
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Tue Mar 13 14:56:06 2018 -0700

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 docs/src/reference/gremlin-variants.asciidoc    |  2 +-
 .../upgrade/release-3.2.x-incubating.asciidoc   | 11 +++++
 gremlin-dotnet/glv/Enum.template                |  9 +++-
 gremlin-dotnet/glv/generate.groovy              | 41 +++++++--------
 .../Gremlin.Net/Process/Traversal/Barrier.cs    |  9 +++-
 .../Process/Traversal/Cardinality.cs            | 13 +++--
 .../src/Gremlin.Net/Process/Traversal/Column.cs | 11 +++--
 .../Gremlin.Net/Process/Traversal/Direction.cs  | 13 +++--
 .../Process/Traversal/EnumWrapper.cs            | 52 ++++++++++++++++++++
 .../Process/Traversal/GraphSONVersion.cs        | 13 +++--
 .../Process/Traversal/GraphTraversal.cs         | 43 +++++++++-------
 .../Process/Traversal/GraphTraversalSource.cs   | 14 ++++--
 .../Process/Traversal/GryoVersion.cs            | 11 +++--
 .../Process/Traversal/IBiFunction.cs            | 33 +++++++++++++
 .../Process/Traversal/IBinaryOperator.cs        | 34 +++++++++++++
 .../Process/Traversal/IComparator.cs            | 32 ++++++++++++
 .../Gremlin.Net/Process/Traversal/IConsumer.cs  | 33 +++++++++++++
 .../Gremlin.Net/Process/Traversal/IFunction.cs  | 32 ++++++++++++
 .../Gremlin.Net/Process/Traversal/IPredicate.cs | 32 ++++++++++++
 .../Gremlin.Net/Process/Traversal/Operator.cs   | 29 ++++++-----
 .../src/Gremlin.Net/Process/Traversal/Order.cs  | 13 +++--
 .../src/Gremlin.Net/Process/Traversal/Pick.cs   | 11 +++--
 .../src/Gremlin.Net/Process/Traversal/Pop.cs    | 15 ++++--
 .../src/Gremlin.Net/Process/Traversal/Scope.cs  | 11 +++--
 .../src/Gremlin.Net/Process/Traversal/T.cs      | 15 ++++--
 .../Process/Traversal/TraversalPredicate.cs     |  2 +-
 .../src/Gremlin.Net/Process/Traversal/__.cs     | 26 +++++-----
 .../Structure/IO/GraphSON/EnumSerializer.cs     |  5 +-
 .../Structure/IO/GraphSON/GraphSONWriter.cs     |  2 +-
 .../Gherkin/GherkinTestRunner.cs                |  1 +
 .../TraversalEnumParameter.cs                   |  5 +-
 32 files changed, 455 insertions(+), 119 deletions(-)
----------------------------------------------------------------------



[2/3] tinkerpop git commit: Merge branch 'tp33'

Posted by dk...@apache.org.
Merge branch 'tp33'


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

Branch: refs/heads/master
Commit: 764824fe85bb03aab1a240fc4003d8733f37414e
Parents: 6e0ccd8 bccff98
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Tue Mar 13 14:55:53 2018 -0700
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Tue Mar 13 14:55:53 2018 -0700

----------------------------------------------------------------------
 .../remote/traversal/AbstractRemoteTraversal.java        |  5 +++++
 .../tinkerpop/gremlin/process/traversal/Traversal.java   |  7 +++++++
 .../traversal/lambda/AbstractLambdaTraversal.java        |  7 +++++++
 .../traversal/strategy/decoration/SubgraphStrategy.java  | 11 ++++++++++-
 .../gremlin/process/traversal/util/DefaultTraversal.java |  5 +++++
 5 files changed, 34 insertions(+), 1 deletion(-)
----------------------------------------------------------------------