Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Which issue does this PR close?
Closes #1279.
Rationale for this change
A marginal performance increase, and to gauge the appetite for these sorts of optimizations. In particular the obvious next question is, do we need to be zero-initializing the buffers to start with? I'm not entirely sure what Rust's safety rules state about uninitialized memory of POD types, are there invalid bit sequences for some types (e.g. f32), if not, why does it matter?
What changes are included in this PR?
Alters
ScalarBuffer::pad_nulls
to not zero the source location on read.Are there any user-facing changes?
Buffers that previously contained zeros in null positions, will now contain arbitrary, but guaranteed to be valid, values
Edit: we must zero-initialize memory in general at least for floats to avoid accidentally including a signalling NaN