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 2016/10/04 18:29:51 UTC
[12/20] tinkerpop git commit: fixed a bug in NotStep where child
requirements were not being analyzed. Added a test to MatchTest to verify
proper functioning. CTR.
fixed a bug in NotStep where child requirements were not being analyzed. Added a test to MatchTest to verify proper functioning. CTR.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/c7f42d82
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/c7f42d82
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/c7f42d82
Branch: refs/heads/TINKERPOP-1487
Commit: c7f42d827414ea7dced0549c02bbc37f40666849
Parents: 85ec40b
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Mon Oct 3 10:46:04 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Mon Oct 3 10:46:04 2016 -0600
----------------------------------------------------------------------
CHANGELOG.asciidoc | 1 +
.../process/traversal/step/filter/NotStep.java | 7 +++
.../traversal/step/map/GroovyMatchTest.groovy | 10 ++++
.../process/traversal/step/map/MatchTest.java | 63 ++++++++++++++------
4 files changed, 62 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c7f42d82/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index d0aa8e8..cf89a5c 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -26,6 +26,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
TinkerPop 3.1.5 (Release Date: NOT OFFICIALLY RELEASED YET)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+* Fixed a bug in `NotStep` where child requirements were not being analyzed.
* Fixed output redirection and potential memory leak in `GremlinGroovyScriptEngine`.
* Corrected naming of `g_withPath_V_asXaX_out_out_mapXa_name_it_nameX` and `g_withPath_V_asXaX_out_mapXa_nameX` in `MapTest`.
* Improved session cleanup when a close is triggered by the client.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c7f42d82/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/NotStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/NotStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/NotStep.java
index 56ad497..e0f7038 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/NotStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/NotStep.java
@@ -21,11 +21,13 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
import java.util.Collections;
import java.util.List;
+import java.util.Set;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -65,4 +67,9 @@ public final class NotStep<S> extends FilterStep<S> implements TraversalParent {
public int hashCode() {
return super.hashCode() ^ this.notTraversal.hashCode();
}
+
+ @Override
+ public Set<TraverserRequirement> getRequirements() {
+ return this.getSelfAndChildRequirements();
+ }
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c7f42d82/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
index c2f9d43..b3d8ea9 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
@@ -338,5 +338,15 @@ public abstract class GroovyMatchTest {
__.as('b').both.as('c')).dedup('a','b').by(label)
""", g)
}
+
+ @Override
+ public Traversal<Vertex, String> get_g_V_notXmatchXa_age_b__a_name_cX_whereXb_eqXcXX_selectXaXX_name() {
+ TraversalScriptHelper.compute("""
+ g.V.not(match(
+ __.as('a').age.as('b'),
+ __.as('a').name.as('c')).
+ where('b', eq('c')).select('a')).name
+ """, g)
+ }
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c7f42d82/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
index 5d2ed95..46b8e59 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
@@ -43,8 +43,17 @@ import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.GRATEFUL;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
import static org.apache.tinkerpop.gremlin.process.traversal.P.eq;
import static org.apache.tinkerpop.gremlin.process.traversal.P.neq;
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
-import static org.junit.Assert.*;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.and;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.as;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.match;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.not;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.or;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.repeat;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.where;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
/**
* @author Joshua Shinavier (http://fortytwo.net)
@@ -134,6 +143,9 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
// distinct values with by()-modulation
public abstract Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_both_b__b_both_cX_dedupXa_bX_byXlabelX();
+ // test not(match)
+ public abstract Traversal<Vertex, String> get_g_V_notXmatchXa_age_b__a_name_cX_whereXb_eqXcXX_selectXaXX_name();
+
@Test
@LoadGraphWith(MODERN)
public void g_V_valueMap_matchXa_selectXnameX_bX() {
@@ -144,7 +156,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
counter++;
final Map<String, Object> map = traversal.next();
assertTrue(Map.class.isAssignableFrom(map.get("a").getClass()));
- final String name = ((Map<String,List<String>>) map.get("a")).get("name").get(0);
+ final String name = ((Map<String, List<String>>) map.get("a")).get("name").get(0);
assertEquals(name, ((List<String>) map.get("b")).get(0));
}
assertEquals(6, counter);
@@ -156,12 +168,12 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
final Traversal<Vertex, Map<String, Vertex>> traversal = get_g_V_matchXa_out_bX();
printTraversalForm(traversal);
checkResults(makeMapList(2,
- "a", convertToVertex(graph, "marko"), "b", convertToVertex(graph, "lop"),
- "a", convertToVertex(graph, "marko"), "b", convertToVertex(graph, "josh"),
- "a", convertToVertex(graph, "marko"), "b", convertToVertex(graph, "vadas"),
- "a", convertToVertex(graph, "josh"), "b", convertToVertex(graph, "ripple"),
- "a", convertToVertex(graph, "josh"), "b", convertToVertex(graph, "lop"),
- "a", convertToVertex(graph, "peter"), "b", convertToVertex(graph, "lop")),
+ "a", convertToVertex(graph, "marko"), "b", convertToVertex(graph, "lop"),
+ "a", convertToVertex(graph, "marko"), "b", convertToVertex(graph, "josh"),
+ "a", convertToVertex(graph, "marko"), "b", convertToVertex(graph, "vadas"),
+ "a", convertToVertex(graph, "josh"), "b", convertToVertex(graph, "ripple"),
+ "a", convertToVertex(graph, "josh"), "b", convertToVertex(graph, "lop"),
+ "a", convertToVertex(graph, "peter"), "b", convertToVertex(graph, "lop")),
traversal);
}
@@ -266,10 +278,10 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
final Traversal<Vertex, Map<String, Vertex>> traversal = get_g_V_matchXa_created_b__b_0created_aX();
printTraversalForm(traversal);
checkResults(makeMapList(2,
- "a", convertToVertex(graph, "marko"), "b", convertToVertex(graph, "lop"),
- "a", convertToVertex(graph, "josh"), "b", convertToVertex(graph, "lop"),
- "a", convertToVertex(graph, "peter"), "b", convertToVertex(graph, "lop"),
- "a", convertToVertex(graph, "josh"), "b", convertToVertex(graph, "ripple")),
+ "a", convertToVertex(graph, "marko"), "b", convertToVertex(graph, "lop"),
+ "a", convertToVertex(graph, "josh"), "b", convertToVertex(graph, "lop"),
+ "a", convertToVertex(graph, "peter"), "b", convertToVertex(graph, "lop"),
+ "a", convertToVertex(graph, "josh"), "b", convertToVertex(graph, "ripple")),
traversal);
}
@@ -368,12 +380,12 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
private void assertCommon(Traversal<Vertex, Map<String, Vertex>> traversal) {
checkResults(makeMapList(4,
- "a", convertToVertex(graph, "Garcia"), "b", convertToVertex(graph, "CREAM PUFF WAR"), "c", convertToVertex(graph, "CREAM PUFF WAR"), "d", convertToVertex(graph, "Garcia"),
- "a", convertToVertex(graph, "Garcia"), "b", convertToVertex(graph, "CREAM PUFF WAR"), "c", convertToVertex(graph, "CRYPTICAL ENVELOPMENT"), "d", convertToVertex(graph, "Garcia"),
- "a", convertToVertex(graph, "Garcia"), "b", convertToVertex(graph, "CRYPTICAL ENVELOPMENT"), "c", convertToVertex(graph, "CREAM PUFF WAR"), "d", convertToVertex(graph, "Garcia"),
- "a", convertToVertex(graph, "Garcia"), "b", convertToVertex(graph, "CRYPTICAL ENVELOPMENT"), "c", convertToVertex(graph, "CRYPTICAL ENVELOPMENT"), "d", convertToVertex(graph, "Garcia"),
- "a", convertToVertex(graph, "Grateful_Dead"), "b", convertToVertex(graph, "CANT COME DOWN"), "c", convertToVertex(graph, "DOWN SO LONG"), "d", convertToVertex(graph, "Garcia"),
- "a", convertToVertex(graph, "Grateful_Dead"), "b", convertToVertex(graph, "THE ONLY TIME IS NOW"), "c", convertToVertex(graph, "DOWN SO LONG"), "d", convertToVertex(graph, "Garcia")), traversal);
+ "a", convertToVertex(graph, "Garcia"), "b", convertToVertex(graph, "CREAM PUFF WAR"), "c", convertToVertex(graph, "CREAM PUFF WAR"), "d", convertToVertex(graph, "Garcia"),
+ "a", convertToVertex(graph, "Garcia"), "b", convertToVertex(graph, "CREAM PUFF WAR"), "c", convertToVertex(graph, "CRYPTICAL ENVELOPMENT"), "d", convertToVertex(graph, "Garcia"),
+ "a", convertToVertex(graph, "Garcia"), "b", convertToVertex(graph, "CRYPTICAL ENVELOPMENT"), "c", convertToVertex(graph, "CREAM PUFF WAR"), "d", convertToVertex(graph, "Garcia"),
+ "a", convertToVertex(graph, "Garcia"), "b", convertToVertex(graph, "CRYPTICAL ENVELOPMENT"), "c", convertToVertex(graph, "CRYPTICAL ENVELOPMENT"), "d", convertToVertex(graph, "Garcia"),
+ "a", convertToVertex(graph, "Grateful_Dead"), "b", convertToVertex(graph, "CANT COME DOWN"), "c", convertToVertex(graph, "DOWN SO LONG"), "d", convertToVertex(graph, "Garcia"),
+ "a", convertToVertex(graph, "Grateful_Dead"), "b", convertToVertex(graph, "THE ONLY TIME IS NOW"), "c", convertToVertex(graph, "DOWN SO LONG"), "d", convertToVertex(graph, "Garcia")), traversal);
}
@Test
@@ -483,6 +495,14 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
assertEquals(results.size(), counter);
}
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_notXmatchXa_age_b__a_name_cX_whereXb_eqXcXX_selectXaXX_name() {
+ final Traversal<Vertex, String> traversal = get_g_V_notXmatchXa_age_b__a_name_cX_whereXb_eqXcXX_selectXaXX_name();
+ printTraversalForm(traversal);
+ checkResults(Arrays.asList("marko", "peter", "josh", "vadas", "lop", "ripple"), traversal);
+ }
+
public static class GreedyMatchTraversals extends Traversals {
@Before
public void setupTest() {
@@ -739,5 +759,10 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
as("a").both().as("b"),
as("b").both().as("c")).dedup("a", "b").by(T.label);
}
+
+ @Override
+ public Traversal<Vertex, String> get_g_V_notXmatchXa_age_b__a_name_cX_whereXb_eqXcXX_selectXaXX_name() {
+ return g.V().not(match(__.as("a").values("age").as("b"), __.as("a").values("name").as("c")).where("b", eq("c")).select("a")).values("name");
+ }
}
}