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)