Skip to content

Commit

Permalink
Improve default implementation of Array::is_nullable
Browse files Browse the repository at this point in the history
Since is_nullable returns `false` if the array is guaranteed to not
contain any logical nulls, the correct default implementation could
leverage `self.logical_null_count` more appropriately than
`self.null_count`.

To reduce chance of negative surprises in downstream projects, we could
introduce the new behavior under `is_logically_nullable` name and
deprecate `is_nullable` without changing it.
  • Loading branch information
findepi committed Nov 16, 2024
1 parent ef5fe4b commit 7b2756a
Showing 1 changed file with 1 addition and 2 deletions.
3 changes: 1 addition & 2 deletions arrow-array/src/array/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -317,8 +317,7 @@ pub trait Array: std::fmt::Debug + Send + Sync {
/// even if the nulls present in [`DictionaryArray::values`] are not referenced by any key,
/// and therefore would not appear in [`Array::logical_nulls`].
fn is_nullable(&self) -> bool {
// TODO this is not necessarily perfect default implementation, since null_count() and logical_null_count() are not always equivalent
self.null_count() != 0
self.logical_null_count() != 0
}

/// Returns the total number of bytes of memory pointed to by this array.
Expand Down

0 comments on commit 7b2756a

Please sign in to comment.