You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by co...@apache.org on 2025/09/05 22:22:14 UTC
(tinkerpop) 05/19: Draft code for logging, different test case.
This is an automated email from the ASF dual-hosted git repository.
colegreer pushed a commit to branch repeatLimit
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit a0e79cd9f3a6186b9e29435442b966d16ab822bd
Author: Andrea Child <an...@improving.com>
AuthorDate: Fri Aug 29 09:39:51 2025 -0700
Draft code for logging, different test case.
---
.../traversal/step/filter/RangeGlobalStep.java | 23 ++++-----
.../tinkergraph/structure/TinkerGraphPlayTest.java | 59 +++++++++++++++++++---
2 files changed, 62 insertions(+), 20 deletions(-)
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java
index 0ec51e0b76..c0c0c86e35 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java
@@ -18,13 +18,21 @@
*/
package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.NoSuchElementException;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.function.BinaryOperator;
import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
import org.apache.tinkerpop.gremlin.process.traversal.step.Bypassing;
import org.apache.tinkerpop.gremlin.process.traversal.step.FilteringBarrier;
import org.apache.tinkerpop.gremlin.process.traversal.step.Ranging;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_LP_NL_O_P_S_SE_SL_Traverser;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
@@ -32,16 +40,6 @@ import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
-import java.io.Serializable;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicLong;
-import java.util.function.BinaryOperator;
-
/**
* @author Bob Briody (http://bobbriody.com)
* @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -75,8 +73,9 @@ public final class RangeGlobalStep<S> extends FilterStep<S> implements Ranging,
if (usePerIterationCounters) {
// Create counter key that isolates between different repeat step contexts
String pathStructure = String.valueOf(traverser.path().size());
+ // consider removing the stepId from the key
String iterationKey = this.getId() + ":" + traverser.loops() + ":" + pathStructure;
- Object vId = ((Vertex) ((B_LP_NL_O_P_S_SE_SL_Traverser) traverser).get()).property("id").value();
+ Object vId = ((Vertex) traverser.get()).property("id").value();
currentCounter = perIterationCounters.computeIfAbsent(iterationKey, k -> new AtomicLong(0L));
System.out.printf("IterationKey: %s Traverser: %s Path: %s Counter: %s High: %s%n", iterationKey, vId, traverser.path(), currentCounter.get(), this.high);
}
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java
index 4a455a58a1..82d72c69a5 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java
@@ -69,11 +69,35 @@ public class TinkerGraphPlayTest {
public void testIterationScopedRangeGlobalInRepeat() {
GraphTraversalSource g = TinkerGraph.open().traversal().withoutStrategies(RepeatUnrollStrategy.class);
load(g);
- GraphTraversal<Vertex, Path> basic = g.V().has("id", "l1-0").repeat(__.limit(1).out("knows")).times(2).path().by("id");
+ GraphTraversal<Vertex, Path> basic = g.V().has("id", "l1-0")
+ .repeat(__.limit(1).out("knows"))
+ .times(2).path().by("id");
toListAndPrint("basic", basic);
- GraphTraversal<Vertex, Path> chained = g.V().has("id", "l2-0").repeat(__.limit(1).out("knows")).times(2).repeat(__.limit(1).in("knows")).times(2).path().by("id");
+ GraphTraversal<Vertex, Path> basicUnfolded = g.V().has("id", "l1-0")
+ .limit(1).out("knows")
+ .limit(1).out("knows")
+ .path().by("id");
+ toListAndPrint("basicUnfolded", basicUnfolded);
+
+ GraphTraversal<Vertex, Path> chained = g.V().has("id", "l2-0")
+ .repeat(__.limit(1).out("knows")).times(2)
+ .repeat(__.limit(1).in("knows")).times(2)
+ .path().by("id");
toListAndPrint("chained", chained);
- GraphTraversal<Vertex, Path> nested = g.V().has("id", "l3-0").repeat(__.limit(1).out("knows").repeat(__.limit(1).in("knows")).times(2)).times(2).path().by("id");
+ GraphTraversal<Vertex, Path> chainedUnfolded = g.V().has("id", "l2-0")
+ .limit(1).out("knows")
+ .limit(1).out("knows")
+ .limit(1).in("knows")
+ .limit(1).in("knows")
+ .path().by("id");
+ toListAndPrint("chainedUnfolded", chainedUnfolded);
+
+ GraphTraversal<Vertex, Path> nested = g.V().has("id", "l3-0")
+ .repeat(__.limit(1).out("knows")
+ .repeat(__.limit(1).in("knows"))
+ .times(2))
+ .times(2)
+ .path().by("id");
toListAndPrint("nested", nested);
GraphTraversal<Vertex, Path> nestedUnfolded = g.V().has("id", "l3-0")
.limit(1).out("knows")
@@ -94,7 +118,6 @@ public class TinkerGraphPlayTest {
.times(2)
.path().by("id");
toListAndPrint("tripleNested", tripleNested);
-
GraphTraversal<Vertex, Path> tripleNestedUnfolded = g.V().has("id", "l1-0")
.limit(1).out("knows")
.limit(1).in("knows")
@@ -114,11 +137,31 @@ public class TinkerGraphPlayTest {
toListAndPrint("tripleNestedUnfolded", tripleNestedUnfolded);
GraphTraversal<Vertex, Path> nested2 = g.V().has("id", "l3-0").out("knows").
- repeat(__.limit(1).out("knows").repeat(__.limit(1).in("knows")).times(2)).
- times(2).path().by("id");
+ repeat(__.limit(1).out("knows")
+ .repeat(__.limit(1).in("knows"))
+ .times(2)).
+ times(2)
+ .path().by("id");
toListAndPrint("nested2", nested2);
-// GraphTraversal<Vertex, Object> aggregate = g.V().has("id", "l1-0").repeat(__.limit(1).out("knows").aggregate("x")).times(2).cap("x");
-// toListAndPrint("aggregate", aggregate);
+ GraphTraversal<Vertex, Path> nested2Unfolded = g.V().has("id", "l3-0").out("knows")
+ .limit(1).out("knows")
+ .limit(1).in("knows")
+ .limit(1).in("knows")
+ .limit(1).out("knows")
+ .limit(1).in("knows")
+ .limit(1).in("knows")
+ .path().by("id");
+ toListAndPrint("nested2Unfolded", nested2Unfolded);
+ GraphTraversal<Vertex, Object> aggregate = g.V().has("id", "l1-0").repeat(__.limit(1).out("knows").aggregate("x")).times(2).cap("x");
+ toListAndPrint("aggregate", aggregate);
+
+ GraphTraversal<Vertex, Path> test = g.V().has("id", "l1-0")
+ .union(out().limit(1), out().out().limit(1))
+ .repeat(__.limit(1))
+ .times(1).path().by("id");
+ toListAndPrint("test", test);
+ GraphTraversal<Vertex, Path> test2 = g.V().has("id", "l1-0").union(out().limit(1), out().out().limit(1)).limit(1).path().by("id");
+ toListAndPrint("test2", test2);
}
private void toListAndPrint(String header, GraphTraversal t) {