# File lib/innodb/page/index.rb, line 402
  def record_header_redundant_additional(header, cursor)
    lengths, nulls, externs = [], [], []

    field_offsets = record_header_redundant_field_end_offsets(header, cursor)

    this_field_offset = 0
    field_offsets.each do |n|
      case header[:offset_size]
      when 1
        next_field_offset = (n & RECORD_REDUNDANT_OFF1_OFFSET_MASK)
        lengths << (next_field_offset - this_field_offset)
        nulls   << ((n & RECORD_REDUNDANT_OFF1_NULL_MASK) != 0)
        externs << false
      when 2
        next_field_offset = (n & RECORD_REDUNDANT_OFF2_OFFSET_MASK)
        lengths << (next_field_offset - this_field_offset)
        nulls   << ((n & RECORD_REDUNDANT_OFF2_NULL_MASK) != 0)
        externs << ((n & RECORD_REDUNDANT_OFF2_EXTERN_MASK) != 0)
      end
      this_field_offset = next_field_offset
    end

    # If possible, refer to fields by name rather than position for
    # better formatting (i.e. pp).
    if record_format
      header[:lengths], header[:nulls], header[:externs] = {}, [], []

      record_fields.each do |f|
        header[:lengths][f.name] = lengths[f.position]
        header[:nulls] << f.name if nulls[f.position]
        header[:externs] << f.name if externs[f.position]
      end
    else
      header[:lengths], header[:nulls], header[:externs] = lengths, nulls, externs
    end
  end