class Innodb::Page::SysDataDictionaryHeader

Constants

Public Instance Methods

data_dictionary_header() click to toggle source

Parse the data dictionary header from the page.

# File lib/innodb/page/sys_data_dictionary_header.rb, line 29
def data_dictionary_header
  cursor(pos_data_dictionary_header).name("data_dictionary_header") do |c|
    Header.new(
      max_row_id: c.name("max_row_id") { c.read_uint64 },
      max_table_id: c.name("max_table_id") { c.read_uint64 },
      max_index_id: c.name("max_index_id") { c.read_uint64 },
      max_space_id: c.name("max_space_id") { c.read_uint32 },
      unused_mix_id_low: c.name("unused_mix_id_low") { c.read_uint32 },
      indexes: c.name("indexes") do
        {
          SYS_TABLES: c.name("SYS_TABLES") do
            {
              PRIMARY: c.name("PRIMARY") { c.read_uint32 },
              ID: c.name("ID") { c.read_uint32 },
            }
          end,
          SYS_COLUMNS: c.name("SYS_COLUMNS") do
            {
              PRIMARY: c.name("PRIMARY") { c.read_uint32 },
            }
          end,
          SYS_INDEXES: c.name("SYS_INDEXES") do
            {
              PRIMARY: c.name("PRIMARY") { c.read_uint32 },
            }
          end,
          SYS_FIELDS: c.name("SYS_FIELDS") do
            {
              PRIMARY: c.name("PRIMARY") { c.read_uint32 },
            }
          end,
        }
      end,
      unused_space: c.name("unused_space") { c.read_bytes(4) },
      fseg: c.name("fseg") { Innodb::FsegEntry.get_inode(@space, c) }
    )
  end
end
dump() click to toggle source
Calls superclass method Innodb::Page#dump
# File lib/innodb/page/sys_data_dictionary_header.rb, line 83
def dump
  super

  puts
  puts "data_dictionary header:"
  pp data_dictionary_header
end
each_region() { |region( offset: pos_data_dictionary_header, length: size_data_dictionary_header, name: :data_dictionary_header, info: "Data Dictionary Header"| ... } click to toggle source
Calls superclass method Innodb::Page#each_region
# File lib/innodb/page/sys_data_dictionary_header.rb, line 68
def each_region(&block)
  return enum_for(:each_region) unless block_given?

  super

  yield Region.new(
    offset: pos_data_dictionary_header,
    length: size_data_dictionary_header,
    name: :data_dictionary_header,
    info: "Data Dictionary Header"
  )

  nil
end
pos_data_dictionary_header() click to toggle source

The position of the data dictionary header within the page.

# File lib/innodb/page/sys_data_dictionary_header.rb, line 19
def pos_data_dictionary_header
  pos_page_body
end
size_data_dictionary_header() click to toggle source

The size of the data dictionary header.

# File lib/innodb/page/sys_data_dictionary_header.rb, line 24
def size_data_dictionary_header
  ((8 * 3) + (4 * 7) + 4 + Innodb::FsegEntry::SIZE)
end