You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2019/03/23 15:06:50 UTC
[tinkerpop] branch tp4 updated: identity() is now a
map(traverser::object). Now Map, Filter, FlatMap, Reduce,
and Branch are self-consistent.
This is an automated email from the ASF dual-hosted git repository.
okram pushed a commit to branch tp4
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
The following commit(s) were added to refs/heads/tp4 by this push:
new 635eeca identity() is now a map(traverser::object). Now Map, Filter, FlatMap, Reduce, and Branch are self-consistent.
635eeca is described below
commit 635eecaf3be3cb37a550ef284ff54c65ab27dae9
Author: Marko A. Rodriguez <ok...@gmail.com>
AuthorDate: Sat Mar 23 09:06:42 2019 -0600
identity() is now a map(traverser::object). Now Map, Filter, FlatMap, Reduce, and Branch are self-consistent.
---
.../main/java/org/apache/tinkerpop/language/gremlin/Traversal.java | 2 +-
.../java/org/apache/tinkerpop/machine/bytecode/CoreCompiler.java | 4 +---
.../org/apache/tinkerpop/machine/function/filter/FilterFilter.java | 4 +---
.../tinkerpop/machine/strategy/optimization/IdentityStrategy.java | 5 +++--
4 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java b/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java
index 8525d92..c7214bd 100644
--- a/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java
+++ b/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java
@@ -191,7 +191,7 @@ public class Traversal<C, S, E> implements Iterator<E> {
}
public Traversal<C, S, E> identity() {
- this.bytecode.addInstruction(this.currentCoefficient, Symbols.FILTER, Boolean.TRUE);
+ this.bytecode.addInstruction(this.currentCoefficient, Symbols.MAP, "traverser::object");
return this;
}
diff --git a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/CoreCompiler.java b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/CoreCompiler.java
index c692651..359e6e7 100644
--- a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/CoreCompiler.java
+++ b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/CoreCompiler.java
@@ -80,9 +80,7 @@ public final class CoreCompiler implements BytecodeCompiler {
case Symbols.BRANCH:
return new BranchBranch<>(coefficient, labels, BranchBranch.makeBranches(instruction.args()));
case Symbols.FILTER:
- return instruction.args().length == 1 ?
- new FilterFilter<>(coefficient, labels, null, Argument.create(instruction.args())) :
- new FilterFilter<>(coefficient, labels, Pred.valueOf(instruction.args()[0]), Argument.create(Arrays.copyOfRange(instruction.args(), 1, instruction.args().length)));
+ return new FilterFilter<>(coefficient, labels, Pred.valueOf(instruction.args()[0]), Argument.create(Arrays.copyOfRange(instruction.args(), 1, instruction.args().length)));
case Symbols.FLATMAP:
return new FlatmapFlatmap<>(coefficient, labels, Argument.create(instruction.args()));
case Symbols.GROUP_COUNT:
diff --git a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/filter/FilterFilter.java b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/filter/FilterFilter.java
index d93a420..df39450 100644
--- a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/filter/FilterFilter.java
+++ b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/filter/FilterFilter.java
@@ -45,9 +45,7 @@ public final class FilterFilter<C, S> extends AbstractFunction<C> implements Fil
@Override
public boolean test(final Traverser<C, S> traverser) {
- return null == this.pred ?
- this.argument.filterArg(traverser) :
- this.pred.test(traverser.object(), this.argument.mapArg(traverser));
+ return this.pred.test(traverser.object(), this.argument.mapArg(traverser));
}
@Override
diff --git a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/strategy/optimization/IdentityStrategy.java b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/strategy/optimization/IdentityStrategy.java
index 6c1bd99..db223b9 100644
--- a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/strategy/optimization/IdentityStrategy.java
+++ b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/strategy/optimization/IdentityStrategy.java
@@ -31,8 +31,9 @@ public final class IdentityStrategy extends AbstractStrategy<Strategy.Optimizati
@Override
public <C> void apply(final Bytecode<C> bytecode) {
bytecode.getInstructions().removeIf(instruction ->
- instruction.op().equals(CoreCompiler.Symbols.FILTER) &&
- Boolean.TRUE.equals(instruction.args()[0]) &&
+ instruction.op().equals(CoreCompiler.Symbols.MAP) &&
+ instruction.args().length == 1 &&
+ "traverser::object".equals(instruction.args()[0]) &&
instruction.labels().isEmpty() &&
instruction.coefficient().isUnity());
}