Repository: tinkerpop
Updated Branches:
  refs/heads/master 7d24580d0 -> da15472e9


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


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

Branch: refs/heads/master
Commit: 12aa2d2fe534fbd9540c9328725ab844e4bb1010
Parents: 3f909cb
Author: Daniel Kuppitz <daniel_kupp...@hotmail.com>
Authored: Sun May 28 15:41:34 2017 +0200
Committer: Daniel Kuppitz <daniel_kupp...@hotmail.com>
Committed: Thu Jun 1 11:43:10 2017 +0200

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


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/12aa2d2f/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 2d77671..3ec765c 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -26,6 +26,7 @@ 
image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 TinkerPop 3.2.5 (Release Date: NOT OFFICIALLY RELEASED YET)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+* Fixed folding of multiple `hasId()`'s into `GraphStep`.
 * Added string performance options to `StarGraph`.
 * Fixed a bug in `until(predicate)` where it was actually calling 
`emit(predicate)`.
 * Fixed inconsistency in GraphSON serialization of `Path` where properties of 
graph elements were being included when serialized.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/12aa2d2f/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/12aa2d2f/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..76e79a4 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').hasLabel('software')")
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/12aa2d2f/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..9bd3e23 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").hasLabel("software");
+        }
     }
 }

Reply via email to