GitHub user okram opened a pull request:

    https://github.com/apache/tinkerpop/pull/538

    TINKERPOP-1248: OrderGlobalStep should use local star graph to compute 
sorts, prior to reduction.

    https://issues.apache.org/jira/browse/TINKERPOP-1248
    
    We now support having the projected data of both `OrderGlobalStep` and 
`SampleGlobalStep` being co-located with the `Traverser` via a traverser 
wrapper called `ProjectedTraverser`. This allows us to order traversers based 
on any projects of the local star graph -- NOT just `PathProcessor.ID`. This 
also reduces the complexity of ordering with `by()`-modulation as we don't have 
to constantly apply a projection traversal. Finally, this reduces the chances 
of problems with serializing the order/sample traversals -- e.g. what if 
side-effects are accessed and the traversals in the bi-operators are detached 
from the parent traversal.
    
    --- before I VOTE +1, I'm going to see if I can use this same model for 
`GroupStep`. If so, huge. If its complicated, will push off for the next tp32/ 
release.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/apache/tinkerpop TINKERPOP-1248

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/tinkerpop/pull/538.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #538
    
----
commit 501e97a1ecb23f76b2fddba8eaed1dba4a5a839e
Author: Marko A. Rodriguez <okramma...@gmail.com>
Date:   2017-01-18T16:08:24Z

    Created OrdertedTraverser which allows us to move beyond the star graph for 
OrderGlobalStep by()-projections. Moreover, it reduces the complexity of 
ordering as the objects of comparison are already determined. Going to 
generalize fully to a ProjectedTraverser which will allow us to do the same for 
SampleGlobalStep, DedupGlobalStep, and down the road maintain order even as the 
computation is re-distributed to workers.

commit 5045f67f469e163d1363f953672a3f38b4ff2a3f
Author: Marko A. Rodriguez <okramma...@gmail.com>
Date:   2017-01-18T16:38:21Z

    We now have ProjectedTraveser which is a Traverser with List<Object> of 
projections. OrderGlobalStep uses this and thus, can order for everything 
within the local star graph. Added MultiComparator which is like 
ChainedComparator but doesn't contain traversal projections -- just comparators.

commit b2f0c57df6fd9191904213622ae718a0790d7a03
Author: Marko A. Rodriguez <okramma...@gmail.com>
Date:   2017-01-18T18:07:32Z

    Removed a PathProcessor.ID constraint from ComputerVerificationStrategy. 
Moreover, sampling and ordering is more efficient as the projected data is 
co-located with the traverser in the new ProjectedTraverser wrapper. Going to 
leave it at this for tp32/... Moving forward, we can make it so we don't need 
to DetachFactory.detach(true) for CollectingBarrierStep by maintaining 'future 
data.' Its complicated and I don't want to introduce potential bugs.

commit 91e1f50c8b95d295a86cba6f3c9db7a002664233
Author: Marko A. Rodriguez <okramma...@gmail.com>
Date:   2017-01-18T18:17:05Z

    updated CHANGELOG and tweaked ProjectTraverser variable naming.

----


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to