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 2017/05/28 13:42:34 UTC

tinkerpop git commit: Fixed folding of multiple `hasId()` into `GraphStep`.

Repository: tinkerpop
Updated Branches:
  refs/heads/tp32 2bc5431ad -> 5c41a827f


Fixed folding of multiple `hasId()` into `GraphStep`.


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

Branch: refs/heads/tp32
Commit: 5c41a827f261889012cb368a59a07db8d18f6961
Parents: 2bc5431
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Sun May 28 15:41:34 2017 +0200
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Sun May 28 15:41:34 2017 +0200

----------------------------------------------------------------------
 .../process/traversal/step/map/GraphStep.java   |  3 +-
 .../traversal/step/filter/GroovyHasTest.groovy  | 10 +++++++
 .../process/traversal/step/filter/HasTest.java  | 31 ++++++++++++++++++++
 3 files changed, 43 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5c41a827/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java
index 03a0bc4..7ab7d13 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java
@@ -181,7 +181,8 @@ public class GraphStep<S, E extends Element> extends AbstractStep<S, E> implemen
      * @return true if the {@link HasContainer} updated ids and thus, was processed.
      */
     public static boolean processHasContainerIds(final GraphStep<?, ?> graphStep, final HasContainer hasContainer) {
-        if (hasContainer.getKey().equals(T.id.getAccessor()) && (hasContainer.getBiPredicate() == Compare.eq || hasContainer.getBiPredicate() == Contains.within)) {
+        if (hasContainer.getKey().equals(T.id.getAccessor()) && graphStep.ids.length == 0 &&
+                (hasContainer.getBiPredicate() == Compare.eq || hasContainer.getBiPredicate() == Contains.within)) {
             graphStep.addIds(hasContainer.getValue());
             return true;
         }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5c41a827/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
index 0a7729c..abaabf9 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
@@ -159,5 +159,15 @@ public abstract class GroovyHasTest {
         public Traversal<Vertex, String> get_g_V_hasNotXageX_name() {
             new ScriptTraversal<>(g, "gremlin-groovy", "g.V.hasNot('age').name");
         }
+
+        @Override
+        public Traversal<Vertex, Vertex>  get_g_V_hasIdX1X_hasIdX2X(final Object v1Id, final Object v2Id) {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.hasId(v1Id).hasId(v2Id)", "v1Id", v1Id, "v2Id", v2Id)
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_hasLabelXpersonX_hasLabelXsoftwareX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.hasLabel('person').hasId('software')")
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5c41a827/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java
index d132eb1..01f20a7 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java
@@ -104,6 +104,10 @@ public abstract class HasTest extends AbstractGremlinProcessTest {
 
     public abstract Traversal<Vertex, String> get_g_V_hasNotXageX_name();
 
+    public abstract Traversal<Vertex, Vertex> get_g_V_hasIdX1X_hasIdX2X(final Object v1Id, final Object v2Id);
+
+    public abstract Traversal<Vertex, Vertex> get_g_V_hasLabelXpersonX_hasLabelXsoftwareX();
+
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_outXcreatedX_hasXname__mapXlengthX_isXgtX3XXX_name() {
@@ -427,6 +431,23 @@ public abstract class HasTest extends AbstractGremlinProcessTest {
         checkResults(Arrays.asList("lop", "ripple"), traversal);
     }
 
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_hasIdX1X_hasIdX2X() {
+        final Traversal<Vertex, Vertex> traversal = get_g_V_hasIdX1X_hasIdX2X(
+                convertToVertexId("marko"), convertToVertexId("vadas")
+        );
+        printTraversalForm(traversal);
+        assertFalse(traversal.hasNext());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_hasLabelXpersonX_hasLabelXsoftwareX() {
+        final Traversal<Vertex, Vertex> traversal = get_g_V_hasLabelXpersonX_hasLabelXsoftwareX();
+        printTraversalForm(traversal);
+        assertFalse(traversal.hasNext());
+    }
 
     public static class Traversals extends HasTest {
         @Override
@@ -558,5 +579,15 @@ public abstract class HasTest extends AbstractGremlinProcessTest {
         public Traversal<Vertex, String> get_g_V_hasNotXageX_name() {
             return g.V().hasNot("age").values("name");
         }
+
+        @Override
+        public Traversal<Vertex, Vertex>  get_g_V_hasIdX1X_hasIdX2X(final Object v1Id, final Object v2Id) {
+            return g.V().hasId(v1Id).hasId(v2Id);
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_hasLabelXpersonX_hasLabelXsoftwareX() {
+            return g.V().hasLabel("person").hasId("software");
+        }
     }
 }