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

Reply via email to