You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by dkuppitz <gi...@git.apache.org> on 2018/03/02 21:11:59 UTC

[GitHub] tinkerpop pull request #805: TINKERPOP-1777 Gremlin .max step returns -21474...

GitHub user dkuppitz opened a pull request:

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

    TINKERPOP-1777 Gremlin .max step returns -2147483648 for empty result sets

    https://issues.apache.org/jira/browse/TINKERPOP-1777
    
    Fixed the behavior of `min()`, `max()`, `mean()` and `sum()`.
    If no input is given, these steps will now throw a `FastNoElementException`.
    
    Also adjusted existing test cases to be in line with the new behavior.
    
    `docker/build.sh -t -i` passed.
    
    VOTE: +1

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

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

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

    https://github.com/apache/tinkerpop/pull/805.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 #805
    
----
commit 32014426f12478e13d73b3c1bdca8df6d79d08da
Author: Daniel Kuppitz <da...@...>
Date:   2018-02-27T17:15:07Z

    Fixed the behavior of `min()`, `max()`, `mean()` and `sum()`.
    If no input is given, these steps will now throw a `FastNoElementException`.
    
    Also adjusted existing test cases to be in line with the new behavior.

commit 7149f8e8c1c255420b19748632ee4d928480f2e2
Author: Daniel Kuppitz <da...@...>
Date:   2018-03-02T21:04:58Z

    Updated release docs

----


---

[GitHub] tinkerpop pull request #805: TINKERPOP-1777 Gremlin .max step returns -21474...

Posted by dkuppitz <gi...@git.apache.org>.
Github user dkuppitz commented on a diff in the pull request:

    https://github.com/apache/tinkerpop/pull/805#discussion_r172874794
  
    --- Diff: gremlin-test/features/branch/Union.feature ---
    @@ -135,7 +135,6 @@ Feature: Step - union()
           | d[3].l   |
           | d[0].l   |
           | d[1.9].d |
    -      | d[0].i   |
    --- End diff --
    
    > just so i'm clear, this value is no longer in the output because vadas (aka v[2]) has no out edges to sum a weight on...is that right?
    
    Exactly.
    
    It's the same thing as doing just `g.V(2).outE()` - the traverser would simply die as there are no outgoing edges. Likewise with `outE().values('weight').sum()`, there simply is no sum, hence the traverser dies.


---

[GitHub] tinkerpop pull request #805: TINKERPOP-1777 Gremlin .max step returns -21474...

Posted by asfgit <gi...@git.apache.org>.
Github user asfgit closed the pull request at:

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


---

[GitHub] tinkerpop pull request #805: TINKERPOP-1777 Gremlin .max step returns -21474...

Posted by spmallette <gi...@git.apache.org>.
Github user spmallette commented on a diff in the pull request:

    https://github.com/apache/tinkerpop/pull/805#discussion_r172001752
  
    --- Diff: CHANGELOG.asciidoc ---
    @@ -25,6 +25,8 @@ NEED AND IMAGE
     
     This release also includes changes from <<release-3-3-2, 3.3.2>>.
     
    +* Fixed a bug in `ReducingBarrierStep`, that returned the provided seed value despite no elements being available.
    --- End diff --
    
    Should this be a changelog entry for 3.4.0 as this is pointed at the master branch?


---

[GitHub] tinkerpop pull request #805: TINKERPOP-1777 Gremlin .max step returns -21474...

Posted by spmallette <gi...@git.apache.org>.
Github user spmallette commented on a diff in the pull request:

    https://github.com/apache/tinkerpop/pull/805#discussion_r172629315
  
    --- Diff: gremlin-test/features/branch/Union.feature ---
    @@ -135,7 +135,6 @@ Feature: Step - union()
           | d[3].l   |
           | d[0].l   |
           | d[1.9].d |
    -      | d[0].i   |
    --- End diff --
    
    just so i'm clear, this value is no longer in the output because vadas (aka `v[2]`) has no out edges to sum a weight on...is that right? if so, do you happen to know what catches the thrown `FastNoSuchElementException` and prevents it from bubbling up just kill the whole traversal? (i'm just trying to follow how the code works here for my own edification)


---

[GitHub] tinkerpop pull request #805: TINKERPOP-1777 Gremlin .max step returns -21474...

Posted by spmallette <gi...@git.apache.org>.
Github user spmallette commented on a diff in the pull request:

    https://github.com/apache/tinkerpop/pull/805#discussion_r172627151
  
    --- Diff: docs/src/upgrade/release-3.4.x.asciidoc ---
    @@ -28,3 +28,45 @@ NEED AN IMAGE
     Please see the link:https://github.com/apache/tinkerpop/blob/3.4.0/CHANGELOG.asciidoc#release-3-4-0[changelog] for a complete list of all the modifications that are part of this release.
     
     === Upgrading for Users
    +
    +==== Modifications to reducing barrier steps
    +
    +The behavior of `min()`, `max()`, `mean()` and `sum()` has been modified to return no result if there's no input. Previously these steps yielded the internal seed value:
    +
    +[source,groovy]
    +----
    +gremlin> g.V().values('foo').min()
    +==>NaN
    +gremlin> g.V().values('foo').max()
    +==>NaN
    +gremlin> g.V().values('foo').mean()
    +==>NaN
    +gremlin> g.V().values('foo').sum()
    +==>0
    +----
    +
    +These traversals will no longer emit a result. Note, that this also affects more complex scenarios, e.g. if these steps are used in `by()` modulators:
    +
    +[source,groovy]
    +----
    +gremlin> g.V().group().
    +......1>   by(label).
    +......2>   by(outE().values("weight").sum())
    +==>[software:0,person:3.5]
    +----
    +
    +Since software vertices have no outgoing edges and thus no weight values to sum, `software` will no longer show up in the result. In order to get the same result as before, one would
    +have to add a `coalesce()`-step:
    +
    +[source,groovy]
    +----
    +gremlin> g.V().group().
    +......1>   by(label).
    +......2>   by(outE().values("weight").sum())
    +==>[person:3.5]
    +gremlin> 
    +gremlin> g.V().group().
    +......1>   by(label).
    +......2>   by(coalesce(outE().values("weight"), constant(0)).sum())
    +==>[software:0,person:3.5]
    +----
    --- End diff --
    
    please add the "See: {jira_issue}"


---