[
https://issues.apache.org/jira/browse/TINKERPOP-1822?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16494246#comment-16494246
]
ASF GitHub Bot commented on TINKERPOP-1822:
-------------------------------------------
Github user krlohnes commented on a diff in the pull request:
https://github.com/apache/tinkerpop/pull/838#discussion_r191572290
--- Diff:
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java
---
@@ -273,11 +300,40 @@ public RepeatEndStep(final Traversal.Admin traversal)
{
super(traversal);
}
+ final LinkedList<Traverser.Admin<S>> stashedStarts = new
LinkedList<>();
+
+ private Traverser.Admin<S> nextStart(RepeatStep<S> repeatStep,
boolean useDfs) {
+ if (!useDfs) {
+ return this.starts.next();
+ } else {
+ if (this.starts.hasNext()) {
+ return this.starts.next();
+ } else {
+ return this.stashedStarts.pop();
+ }
+ }
+ }
+
+ @Override
+ public boolean hasNext() {
+ return super.hasNext() || !this.stashedStarts.isEmpty();
+ }
+
@Override
protected Iterator<Traverser.Admin<S>> standardAlgorithm() throws
NoSuchElementException {
final RepeatStep<S> repeatStep = (RepeatStep<S>)
this.getTraversal().getParent();
+ final List<Step> steps = repeatStep.repeatTraversal.getSteps();
+ final Step stepBeforeRepeatEndStep = steps.get(steps.size() -
2);
+ final boolean useDfs = !(stepBeforeRepeatEndStep instanceof
Barrier);
while (true) {
- final Traverser.Admin<S> start = this.starts.next();
+ final Traverser.Admin<S> start = nextStart(repeatStep,
useDfs);
+ if (useDfs) {
+ final List<Traverser.Admin<S>> localStarts = new
ArrayList<>();
--- End diff --
No, this could be done with an index and writing directly to stashed
starts, definitely. will fix.
> Repeat should depth first search
> --------------------------------
>
> Key: TINKERPOP-1822
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1822
> Project: TinkerPop
> Issue Type: Improvement
> Components: process
> Affects Versions: 3.3.0, 3.2.6
> Reporter: Robert Dale
> Priority: Major
>
> Perhaps optionally.
> See also:
> * https://groups.google.com/forum/#!topic/gremlin-users/gLSLxH_K-wE
> * https://github.com/apache/tinkerpop/pull/715
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)