[
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)