[ 
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)

Reply via email to