Ziru Niu created ARROW-11051:
--------------------------------

             Summary: [Rust] Array sum result is wrong with remainder fields
                 Key: ARROW-11051
                 URL: https://issues.apache.org/jira/browse/ARROW-11051
             Project: Apache Arrow
          Issue Type: Bug
          Components: Rust
    Affects Versions: 2.0.0
         Environment: Ubuntu 20.04. rustc nightly
            Reporter: Ziru Niu


Minimal example

```
use arrow::\{array::PrimitiveArray, datatypes::Int64Type};

fn main() {
    let mut s = vec![];
    for _ in 0..32 {
        s.push(Some(1i64));
        s.push(None);
    }
    let v: PrimitiveArray<Int64Type> = s.into();
    dbg!(arrow::compute::sum(&v));
}
```
 
The following code in `compute::sum` is wrong. The bit mask is checked reversed.
```
            remainder.iter().enumerate().for_each(|(i, value)| {
                if remainder_bits & (1 << i) != 0 {
                    remainder_sum = remainder_sum + *value;
                }
            });
 ```
 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to