[ https://issues.apache.org/jira/browse/ARROW-3790?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16696236#comment-16696236 ]
Francois Saint-Jacques commented on ARROW-3790: ----------------------------------------------- I'm currently working on this, the problem turned out to be a bigger than expected. While the pointed line is indeed wrong, the actual problem lies somewhere else. [~wesmckinn] can you assign this task to me? > [C++] Signed to unsigned integer cast yields incorrect results when type > sizes are the same > ------------------------------------------------------------------------------------------- > > Key: ARROW-3790 > URL: https://issues.apache.org/jira/browse/ARROW-3790 > Project: Apache Arrow > Issue Type: Bug > Components: C++ > Reporter: Wes McKinney > Priority: Major > Fix For: 0.12.0 > > > In > https://github.com/apache/arrow/blob/master/cpp/src/arrow/compute/kernels/cast.cc#L239, > an {{int32_t}} is overflows in > {code} > constexpr in_type kMax = > static_cast<in_type>(std::numeric_limits<out_type>::max()); > {code} > resulting in safety checks not being correctly performed > {code} > In [2]: arr = pa.array([-1, -2, -3], type='int32') > In [3]: arr.cast('uint32') > Out[3]: > <pyarrow.lib.UInt32Array object at 0x7f4889457b88> > [ > 4294967295, > 4294967294, > 4294967293 > ] > {code} > This would be expected to error when {{safe=True}} -- This message was sent by Atlassian JIRA (v7.6.3#76005)