GitHub user ravipesala opened a pull request:
https://github.com/apache/carbondata/pull/2616
[HOTFIX]Fixed int overflow and comparison gone wrong during blocklet min/max
Problem: During calculating min/max for blocklet, it needs to calculate
from all the pages. During that comparison, it is typecasting to int and
overflows, so there is a chance the negative becomes positive and positive
become negative. That's why min max of long comes wrong for bigger values.
Solution: Don't typecast directly, instead check first the negative or
positive and then return.
Be sure to do all of the following checklist to help us incorporate
your contribution quickly and easily:
- [ ] Any interfaces changed?
- [ ] Any backward compatibility impacted?
- [ ] Document update required?
- [ ] Testing done
Please provide details on
- Whether new unit test cases have been added or why no new tests
are required?
- How it is tested? Please attach test report.
- Is it a performance related change? Please attach the performance
test report.
- Any additional information to help reviewers in testing this
change.
- [ ] For large changes, please consider breaking it into sub-tasks under
an umbrella JIRA.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/ravipesala/incubator-carbondata
blocklet-min-max-issue
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/carbondata/pull/2616.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 #2616
----
commit a99d0516ee06a285f8be3880d7005bf161f1c940
Author: ravipesala <ravi.pesala@...>
Date: 2018-08-07T15:49:36Z
Fixed int overflow and comparasion gone wrong during blocklet min/max
----
---