Hi Martin,

Thank you so much for reporting this problem.

In the current implementation, we do not consider corner cases related to
integer overflow, and this problem should be fixed.

I have opened an issue to track this problem [1].
Do you want to provide a patch for it?

Best,
Liya Fan

[1] https://issues.apache.org/jira/browse/ARROW-8392

On Fri, Apr 10, 2020 at 12:55 AM Martin Janda <jan...@crcdata.cz> wrote:

> I made first look to Apache Arrow Java sources.
>
> I found wrong implementation for DefaultVectorComparators.LongComparator
> I suppose that other comparators can be wrong too.
>
> Simple test:
>
> long l1=Long.MIN_VALUE +1L;
> long l2=Long.MAX_VALUE;
>
> System.out.println("Arrow: " + Long.signum(l1 - l2));
> System.out.println("Java : " + Long.compare(l1, l2));
>
> Result:
> Arrow: 1
> Java : -1
>
> I think that there should be added tests for corner cases. And I suggest
> to replace arrow implementation with Long.compare, Integer.compare...
>   that provides correct results.
>    Thank you
>     Martin
>
> PS I have no access to JIRA to report this issue.
>
>

Reply via email to