[ 
https://issues.apache.org/jira/browse/ARROW-10025?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jörn Horstmann resolved ARROW-10025.
------------------------------------
    Resolution: Fixed

Fixed by masking of the bits outside the valid range 
(https://github.com/apache/arrow/pull/8204/files#diff-d7b0b7cde1850e8744ceda458c6dea81)

> [Rust] Filter kernel relies on bits outside of valid len of boolean array
> -------------------------------------------------------------------------
>
>                 Key: ARROW-10025
>                 URL: https://issues.apache.org/jira/browse/ARROW-10025
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: Rust, Rust - DataFusion
>    Affects Versions: 1.0.1
>            Reporter: Jörn Horstmann
>            Priority: Major
>
> The filter kernel accesses the filter array in chunks of u64 and tries to 
> access elements if the corresponding bit is set. This assumes that bits 
> outside of the valid len of that array have to be unset. That assumption is 
> currently not correct for output of the NOT and the IS NULL kernels, which 
> also operate on and negate a whole chunk of their input arrays.
> Testcase (depending on is null kernel from ARROW-10016)
> {code:java}
> #[test]
> fn csv_query_with_is_null_predicate() -> Result<()> {
>     let mut ctx = ExecutionContext::new();
>     register_aggregate_csv(&mut ctx)?;
>     let sql = "SELECT COUNT(1) FROM aggregate_test_100 WHERE c1 IS NULL";
>     let actual = execute(&mut ctx, sql).join("\n");
>     let expected = "0".to_string();
>     assert_eq!(expected, actual);
>     Ok(())
> }
> {code}
>  



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

Reply via email to