pwoody commented on a change in pull request #8167:
URL: https://github.com/apache/arrow/pull/8167#discussion_r487267011
##########
File path:
java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/consumer/DateConsumer.java
##########
@@ -85,13 +85,13 @@ public void consume(ResultSet resultSet) throws
SQLException {
Date date = calendar == null ? resultSet.getDate(columnIndexInResultSet)
:
resultSet.getDate(columnIndexInResultSet, calendar);
if (!resultSet.wasNull()) {
- int day = (int) TimeUnit.MILLISECONDS.toDays(date.getTime());
- if (day < 0 || day > MAX_DAY) {
+ long day = TimeUnit.MILLISECONDS.toDays(date.getTime());
+ if (day < Integer.MIN_VALUE || day > MAX_DAY) {
Review comment:
Yeah, but otherwise we can end up with particularly bad data. I've
changed the condition to just be something similar to Math.toExactInt where we
see if the casted value is the same.
Without doing the big int comparison I think we run the risk of wrapping
around into a totally valid positive range (e.g. 2*Integer.MAX_VALUE + x)
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]