Skip to content

Conversation

@tustvold
Copy link
Contributor

Which issue does this PR close?

Closes #510

Rationale for this change

What changes are included in this PR?

Are there any user-facing changes?

@tustvold tustvold added the api-change Changes to the arrow API label Oct 26, 2022
assert_eq!(r, vec![None, Some("a"), None]);
}

#[test]
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These tests are borrowed from @bjchambers original PR #521

) -> Buffer
where
F: Fn(u64, u64) -> u64,
F: FnMut(u64, u64) -> u64,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is just a drive by fix to make this accept mutable closures - this is a backwards compatible change

@github-actions github-actions bot added the arrow Changes to the arrow crate label Oct 26, 2022
@alamb
Copy link
Contributor

alamb commented Oct 26, 2022

cc @jhorstmann

@bjchambers
Copy link
Contributor

Didn't examine it, but looks a lot simpler than the previous attempts, so that's nice! Curious if something changed to make this easier?

@tustvold
Copy link
Contributor Author

tustvold commented Oct 26, 2022

Curious if something changed to make this easier

I don't think anything changed, but rather than offsetting values as with previous attempts, it just pads the null buffer. This is simpler and highly unlikely to have a meaningful performance or memory impact, as zero-allocating a buffer is effectively free, and null masks are very compressed

@tustvold tustvold requested a review from viirya October 30, 2022 22:34
Ok(BooleanArray::from(data))
}

/// Copies original array, setting null bit to true if a secondary comparison boolean array is set to true.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not related to the change, but I got confused while reading this.

Based on following comment:

    // left=1          right=1 & comp=true    output bitmap=null
    // left=1          right=1 & comp=false   output bitmap=set

I think that if the boolean array is set to true, null bit will be set to false?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is confusion caused by the fact the null masks, are actually validity masks... Will clarify docs

let t = !b;
valid_count += t.count_ones() as usize;
t
}),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The logic looks the same as before.

@tustvold tustvold merged commit 3a90654 into apache:master Oct 31, 2022
@ursabot
Copy link

ursabot commented Oct 31, 2022

Benchmark runs are scheduled for baseline = 99e205f and contender = 3a90654. 3a90654 is a master commit associated with this PR. Results will be available as each benchmark for each run completes.
Conbench compare runs links:
[Skipped ⚠️ Benchmarking of arrow-rs-commits is not supported on ec2-t3-xlarge-us-east-2] ec2-t3-xlarge-us-east-2
[Skipped ⚠️ Benchmarking of arrow-rs-commits is not supported on test-mac-arm] test-mac-arm
[Skipped ⚠️ Benchmarking of arrow-rs-commits is not supported on ursa-i9-9960x] ursa-i9-9960x
[Skipped ⚠️ Benchmarking of arrow-rs-commits is not supported on ursa-thinkcentre-m75q] ursa-thinkcentre-m75q
Buildkite builds:
Supported benchmarks:
ec2-t3-xlarge-us-east-2: Supported benchmark langs: Python, R. Runs only benchmarks with cloud = True
test-mac-arm: Supported benchmark langs: C++, Python, R
ursa-i9-9960x: Supported benchmark langs: Python, R, JavaScript
ursa-thinkcentre-m75q: Supported benchmark langs: C++, Java

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api-change Changes to the arrow API arrow Changes to the arrow crate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

nullif operating on ArrayRef

5 participants