# File lib/innodb/undo_record.rb, line 145
  def read_record_fields(this_record, c)
    this_record[:key] = []
    index_page.record_format[:key].each do |field|
      this_record[:key][field.position] = {
        :name => field.name,
        :type => field.data_type.name,
        :value => c.name(field.name) {
          field_length = c.name("field_length") { c.get_ic_uint32 }
          field.value_by_length(c, field_length)
        }
      }
    end

    if has_previous_version?
      field_count = c.name("field_count") { c.get_ic_uint32 }
      this_record[:row] = Array.new(index_page.record_format[:row].size)
      field_count.times do
        field_number = c.name("field_number[#{field_count}]") { c.get_ic_uint32 }
        field = nil
        field_index = nil
        index_page.record_format[:row].each_with_index do |candidate_field, index|
          if candidate_field.position == field_number
            field = candidate_field
            field_index = index
          end
        end
        raise "Unknown field #{field_number}" unless field
        this_record[:row][field_index] = {
          :name => field.name,
          :type => field.data_type.name,
          :value => c.name(field.name) {
            field_length = c.name("field_length") { c.get_ic_uint32 }
            field.value_by_length(c, field_length)
          }
        }
      end
    end
  end