Uploaded image for project: 'Apache Arrow'
  1. Apache Arrow
  2. ARROW-12804

[C++] Array methods IsNull and IsValid is confused for NullType

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 4.0.0
    • 5.0.0
    • C++

    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

          Activity

            People

              neworld Nate Clark
              crystrix Chenxi Li
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 0.5h
                  0.5h