You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "Stephen Mallette (Jira)" <ji...@apache.org> on 2020/12/15 17:50:00 UTC

[jira] [Created] (TINKERPOP-2491) Improve consistency of the output of range() oriented steps

Stephen Mallette created TINKERPOP-2491:
-------------------------------------------

             Summary: Improve consistency of the output of range() oriented steps
                 Key: TINKERPOP-2491
                 URL: https://issues.apache.org/jira/browse/TINKERPOP-2491
             Project: TinkerPop
          Issue Type: Improvement
          Components: process
    Affects Versions: 3.4.9
            Reporter: Stephen Mallette
            Assignee: Stephen Mallette


As pointed out here:

https://groups.google.com/g/gremlin-users/c/OvxKvvM8rXs/m/slnv6cWpBQAJ

there is an automatic {{List}} unfold with {{limit(local, 1)}} as in:

{code}
g.inject([1, 2, 3], [4]).limit(local, 3).toList() // [[1, 2, 3], [4]]
g.inject([1, 2, 3], [4]).limit(local, 2).toList() // [[1, 2], [4]]
g.inject([1, 2, 3], [4]).limit(local, 1).toList() // [1, 4] ??? - Expected [[1], [4]]
g.inject([1, 2, 3], [4]).limit(local, 0).toList() // [[], []] oh come on
{code}

In addition, `range()` and `tail()` are similarly affected:

{code}
gremlin> g.inject([1, 2, 3], [4]).tail(local, 1).toList()
==>3
==>4
gremlin> g.inject([1, 2, 3], [4]).range(local, 0, 1).toList()
==>1
==>4
{code}

Changing this is a fairly imposing breaking change in behavior. We could mitigate that with a strategy to support the old functionality if folks want to have that:

{code}
g.withStrategy(OldWayStrategy).inject([1, 2, 3], [4]).limit(local, 1)
{code}

would transform to:

{code}
g.inject([1, 2, 3], [4]).limit(local, 1).unfold()
{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)