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