Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
4.0.0
Description
I'm not sure if this is a bug or by design.
Array's method IsNull() and IsValid() is implemented as follows:
/// \brief Return true if value at index is null. Does not boundscheck bool IsNull(int64_t i) const { return null_bitmap_data_ != NULLPTR && !BitUtil::GetBit(null_bitmap_data_, i + data_->offset); } /// \brief Return true if value at index is valid (not null). Does not /// boundscheck bool IsValid(int64_t i) const { return null_bitmap_data_ == NULLPTR || BitUtil::GetBit(null_bitmap_data_, i + data_->offset); }
According to the doc, "Arrays having a 0 null count may choose to not allocate the null bitmap". But a null type array doesn't have a null bitmap. So for a null type array, IsNull() always returns false, IsValid() always returns true.
If this is by design, maybe additional comments and docs should be added.
Attachments
Issue Links
- is duplicated by
-
ARROW-13319 [C++] NullArray::IsNull always returns false and NullArray::IsValid always returns true
-
- Closed
-
- links to