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 2020/05/07 14:54:21 UTC
[tinkerpop] 05/14: Made sure that the barrier step and the reducing
operator are reevaluated when the value traversal is being replaced.
This is an automated email from the ASF dual-hosted git repository.
spmallette pushed a commit to branch TINKERPOP-1682
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 379544359d5536d94851ce9bb08ce8465d7fcfe3
Author: Daniel Kuppitz <da...@hotmail.com>
AuthorDate: Fri Jun 23 23:43:13 2017 +0200
Made sure that the barrier step and the reducing operator are reevaluated when the value traversal is being replaced.
---
.../gremlin/process/traversal/step/map/GroupStep.java | 12 ++++++++----
.../traversal/step/sideEffect/GroupSideEffectStep.java | 18 +++++++++++-------
2 files changed, 19 insertions(+), 11 deletions(-)
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
index 66c9653..d538195 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
@@ -103,15 +103,19 @@ public final class GroupStep<S, K, V> extends ReducingBarrierStep<S, Map<K, V>>
resetBarrierForProfiling = barrierStep != null;
}
+ private void setValueTraversal(final Traversal.Admin<?, ?> kvTraversal) {
+ this.valueTraversal = this.integrateChild(convertValueTraversal(kvTraversal));
+ this.barrierStep = determineBarrierStep(this.valueTraversal);
+ this.setReducingBiOperator(new GroupBiOperator<>(null == this.barrierStep ? Operator.assign : this.barrierStep.getMemoryComputeKey().getReducer()));
+ }
+
@Override
public void modulateBy(final Traversal.Admin<?, ?> kvTraversal) {
if ('k' == this.state) {
this.keyTraversal = this.integrateChild(kvTraversal);
this.state = 'v';
} else if ('v' == this.state) {
- this.valueTraversal = this.integrateChild(convertValueTraversal(kvTraversal));
- this.barrierStep = determineBarrierStep(this.valueTraversal);
- this.setReducingBiOperator(new GroupBiOperator<>(null == this.barrierStep ? Operator.assign : this.barrierStep.getMemoryComputeKey().getReducer()));
+ this.setValueTraversal(kvTraversal);
this.state = 'x';
} else {
throw new IllegalStateException("The key and value traversals for group()-step have already been set: " + this);
@@ -123,7 +127,7 @@ public final class GroupStep<S, K, V> extends ReducingBarrierStep<S, Map<K, V>>
if (null != this.keyTraversal && this.keyTraversal.equals(oldTraversal))
this.keyTraversal = this.integrateChild(newTraversal);
else if (null != this.valueTraversal && this.valueTraversal.equals(oldTraversal))
- this.valueTraversal = this.integrateChild(newTraversal);
+ this.setValueTraversal(newTraversal);
}
@Override
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
index 7eb6659..f278349 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
@@ -74,18 +74,22 @@ public final class GroupSideEffectStep<S, K, V> extends SideEffectStep<S> implem
resetBarrierForProfiling = barrierStep != null;
}
+ private void setValueTraversal(final Traversal.Admin<?, ?> valueTraversal) {
+ this.valueTraversal = this.integrateChild(GroupStep.convertValueTraversal(kvTraversal));
+ this.barrierStep = GroupStep.determineBarrierStep(this.valueTraversal);
+ this.getTraversal().getSideEffects().register(this.sideEffectKey, null,
+ new GroupStep.GroupBiOperator<>(null == this.barrierStep ?
+ Operator.assign :
+ this.barrierStep.getMemoryComputeKey().getReducer()));
+ }
+
@Override
public void modulateBy(final Traversal.Admin<?, ?> kvTraversal) {
if ('k' == this.state) {
this.keyTraversal = this.integrateChild(kvTraversal);
this.state = 'v';
} else if ('v' == this.state) {
- this.valueTraversal = this.integrateChild(GroupStep.convertValueTraversal(kvTraversal));
- this.barrierStep = GroupStep.determineBarrierStep(this.valueTraversal);
- this.getTraversal().getSideEffects().register(this.sideEffectKey, null,
- new GroupStep.GroupBiOperator<>(null == this.barrierStep ?
- Operator.assign :
- this.barrierStep.getMemoryComputeKey().getReducer()));
+ this.setValueTraversal(kvTraversal);
this.state = 'x';
} else {
throw new IllegalStateException("The key and value traversals for group()-step have already been set: " + this);
@@ -97,7 +101,7 @@ public final class GroupSideEffectStep<S, K, V> extends SideEffectStep<S> implem
if (null != this.keyTraversal && this.keyTraversal.equals(oldTraversal))
this.keyTraversal = this.integrateChild(newTraversal);
else if (null != this.valueTraversal && this.valueTraversal.equals(oldTraversal))
- this.valueTraversal = this.integrateChild(newTraversal);
+ this.setValueTraversal(newTraversal);
}
@Override