[ https://issues.apache.org/jira/browse/TINKERPOP-3088?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17888785#comment-17888785 ]
ASF GitHub Bot commented on TINKERPOP-3088: ------------------------------------------- kenhuuu commented on code in PR #2827: URL: https://github.com/apache/tinkerpop/pull/2827#discussion_r1797460966 ########## gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java: ########## @@ -68,7 +69,48 @@ public void processAllStarts() { @Override public S projectTraverser(final Traverser.Admin<S> traverser) { - return (S) mul(traverser.get(), traverser.bulk()); + final S value = traverser.get(); + final long bulk = traverser.bulk(); + final Number projected = mul(value, bulk); + + // the following behavior allows global sum() to behave the same as sum(local) + if (value instanceof Long || value instanceof Double || Review Comment: Float should probably be here too? I think that Long gets promoted to Float during addition, so Float is considered the "wider" type? > SumGlobalStep returns a long value even the highest common type's bit <= 32 > --------------------------------------------------------------------------- > > Key: TINKERPOP-3088 > URL: https://issues.apache.org/jira/browse/TINKERPOP-3088 > Project: TinkerPop > Issue Type: Improvement > Components: process > Affects Versions: 3.7.2 > Reporter: Norio Akagi > Priority: Minor > > This happens because in > {noformat} > @Override > public S projectTraverser(final Traverser.Admin<S> traverser) { > return (S) mul(traverser.get(), traverser.bulk()); > }{noformat} > It multiplies with bulk, which is Long type, so upcasted. This is at least > not in semantics and unexpected behavior -- This message was sent by Atlassian Jira (v8.20.10#820010)