Not going to touch GroupStep in this ticket. Too complicated ... will do for the next release. Minor tweaks and cleanups.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/973484d1 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/973484d1 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/973484d1 Branch: refs/heads/centrality-recipes Commit: 973484d19a81ada87e95f9d3c2b0b66988f362d9 Parents: ee1ab08 Author: Marko A. Rodriguez <okramma...@gmail.com> Authored: Wed Jan 18 12:25:41 2017 -0700 Committer: Marko A. Rodriguez <okramma...@gmail.com> Committed: Wed Jan 18 12:25:41 2017 -0700 ---------------------------------------------------------------------- CHANGELOG.asciidoc | 2 +- .../traversal/step/filter/SampleGlobalStep.java | 8 +++----- .../traversal/step/map/OrderGlobalStep.java | 21 ++++++++------------ 3 files changed, 12 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/973484d1/CHANGELOG.asciidoc ---------------------------------------------------------------------- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 052257f..25ff3e9 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -27,7 +27,7 @@ TinkerPop 3.2.4 (Release Date: NOT OFFICIALLY RELEASED YET) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Added `ProjectedTraverser` which wraps a traverser with a `List<Object>` of projected data. -* `OrderGlobalStep` and `SampleGlobalStep` now emit traversers with their `by()`-projections and thus, can move beyond the local star graph. +* `OrderGlobalStep` and `SampleGlobalStep` use `ProjectedTraverser` and now can work up to the local star graph in OLAP. * SASL negotiation supports both a byte array and Base64 encoded bytes as a string for authentication to Gremlin Server. * Deprecated `TinkerIoRegistry` replacing it with the more consistently named `TinkerIoRegistryV1d0`. * Made error messaging more consistent during result iteration timeouts in Gremlin Server. http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/973484d1/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/SampleGlobalStep.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/SampleGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/SampleGlobalStep.java index 2b2cf20..28d2fb4 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/SampleGlobalStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/SampleGlobalStep.java @@ -66,10 +66,8 @@ public final class SampleGlobalStep<S> extends CollectingBarrierStep<S> implemen @Override public void processAllStarts() { - if (this.starts.hasNext()) { - while (this.starts.hasNext()) { - this.traverserSet.add(this.createProjectedTraverser(this.starts.next())); - } + while (this.starts.hasNext()) { + this.traverserSet.add(this.createProjectedTraverser(this.starts.next())); } } @@ -97,7 +95,7 @@ public final class SampleGlobalStep<S> extends CollectingBarrierStep<S> implemen runningWeight = runningWeight + currentWeight; if (RANDOM.nextDouble() <= ((runningWeight / totalWeight))) { final Traverser.Admin<S> split = s.split(); - split.setBulk(1l); + split.setBulk(1L); sampledSet.add(split); runningAmountToSample++; totalWeight = totalWeight - currentWeight; http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/973484d1/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java index 55d8650..e5c5834 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java @@ -53,7 +53,6 @@ public final class OrderGlobalStep<S, C extends Comparable> extends CollectingBa private List<Pair<Traversal.Admin<S, C>, Comparator<C>>> comparators = new ArrayList<>(); private MultiComparator<C> multiComparator = null; private long limit = Long.MAX_VALUE; - private boolean isShuffle = false; public OrderGlobalStep(final Traversal.Admin traversal) { super(traversal); @@ -61,7 +60,9 @@ public final class OrderGlobalStep<S, C extends Comparable> extends CollectingBa @Override public void barrierConsumer(final TraverserSet<S> traverserSet) { - if (this.isShuffle) + if (null == this.multiComparator) this.multiComparator = this.createMultiComparator(); + // + if (this.multiComparator.isShuffle()) traverserSet.shuffle(); else traverserSet.sort((Comparator) this.multiComparator); @@ -69,12 +70,8 @@ public final class OrderGlobalStep<S, C extends Comparable> extends CollectingBa @Override public void processAllStarts() { - if (null == this.multiComparator) - this.multiComparator = this.createMultiComparator(); - if (this.starts.hasNext()) { - while (this.starts.hasNext()) { - this.traverserSet.add(this.createProjectedTraverser(this.starts.next())); - } + while (this.starts.hasNext()) { + this.traverserSet.add(this.createProjectedTraverser(this.starts.next())); } } @@ -88,7 +85,6 @@ public final class OrderGlobalStep<S, C extends Comparable> extends CollectingBa @Override public void addComparator(final Traversal.Admin<S, C> traversal, final Comparator<C> comparator) { - this.isShuffle = Order.shuffle == (Comparator) comparator; this.comparators.add(new Pair<>(this.integrateChild(traversal), comparator)); } @@ -149,13 +145,12 @@ public final class OrderGlobalStep<S, C extends Comparable> extends CollectingBa @Override public MemoryComputeKey<TraverserSet<S>> getMemoryComputeKey() { - if (null == this.multiComparator) - this.multiComparator = this.createMultiComparator(); + if (null == this.multiComparator) this.multiComparator = this.createMultiComparator(); return MemoryComputeKey.of(this.getId(), new OrderBiOperator<>(this.limit, this.multiComparator), false, true); } - private final ProjectedTraverser<S,Object> createProjectedTraverser(final Traverser.Admin<S> traverser) { - final List<Object> projections = new ArrayList<>(this.comparators.size()); + private final ProjectedTraverser<S, C> createProjectedTraverser(final Traverser.Admin<S> traverser) { + final List<C> projections = new ArrayList<>(this.comparators.size()); for (final Pair<Traversal.Admin<S, C>, Comparator<C>> pair : this.comparators) { projections.add(TraversalUtil.apply(traverser, pair.getValue0())); }