[
https://issues.apache.org/jira/browse/TINKERPOP3-670?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14544057#comment-14544057
]
ASF GitHub Bot commented on TINKERPOP3-670:
-------------------------------------------
Github user okram commented on the pull request:
https://github.com/apache/incubator-tinkerpop/pull/60#issuecomment-102108619
`RangeGlobalStep` and `TailGlobalStep` could inherit from some abstract
class. However, I think getting `TailGlobalStep` built is best first or else
the PR will be too big and too hard to review. After that studying the two
implementation should yield the generalization. Moreover, both steps are very
similar to `DedupStep` as well. They are like "lazy barriers."
`TraverserMapReduce` is responsible for dealing with the end of a
traversal. It does any final computations like ranging, sorting, etc. And yes,
`TailGlobalStep` would fit there as well. However, I can connect it up to
`TraverserMapReduce` -- its not that hard.
And yes -- `ComputerVerificationStrategy` will need to complain if
`TailGlobalStep` is used mid-traversal. It can only be used as the end step and
thus, its processing relegated to `TraverserMapReduce`.
> tail step
> ---------
>
> Key: TINKERPOP3-670
> URL: https://issues.apache.org/jira/browse/TINKERPOP3-670
> Project: TinkerPop 3
> Issue Type: Improvement
> Components: process
> Reporter: Matt Frantz
>
> The tail step has two scopes:
> * global: emits the last N traversers that pass through it.
> * local: emits a {{List}} containing the last N elements of the inbound
> {{List}}
> Additionally, for {{tail(local, 1)}}, it emits a single element rather than a
> {{List}} containing a single element.
> TINKERPOP3-639 provides motivation.
> Scenario: Global scope
> {noformat}
> gremlin> g.V().order().by(T.id, incr).tail(global, 2)
> ==>v[5]
> ==>v[6]
> {noformat}
> Scenario: Default scope is global
> {noformat}
> gremlin> g.V().order().by(T.id, incr).tail(2)
> ==>v[5]
> ==>v[6]
> {noformat}
> Scenario: Local scope, {{List}} input, N>1
> {noformat}
> gremlin> g.V().as('a').out().as('a').out().as('a').select('a').tail(local, 2)
> ==>[v[4], v[5]]
> ==>[v[4], v[3]]
> {noformat}
> Scenario: Local scope, {{List}} input, N=1
> {noformat}
> gremlin> g.V().as('a').out().as('a').out().as('a').select('a').tail(local, 1)
> ==>v[5]
> ==>v[3]
> {noformat}
> Scenario: Local scope, {{Map}} input, N>1
> {noformat}
> gremlin> g.V().as('a').out().as('b').out().as('c').select().tail(local, 2)
> ==>[b:v[4], c:v[5]]
> ==>[b:v[4], c:v[3]]
> {noformat}
> Scenario: Local scope, {{Map}} input, N=1
> {noformat}
> gremlin> g.V().as('a').out().as('b').out().as('c').select().tail(local, 1)
> ==>[c:v[5]]
> ==>[c:v[3]]
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)