# File lib/innodb/undo_log.rb, line 19
  def header
    @header ||= page.cursor(@position).name("header") do |c|
      xid_flag = nil
      {
        :trx_id => c.name("trx_id") { c.get_uint64 },
        :trx_no => c.name("trx_no") { c.get_uint64 },
        :delete_mark_flag => c.name("delete_mark_flag") { (c.get_uint16 != 0) },
        :log_start_offset => c.name("log_start_offset") { c.get_uint16 },
        :xid_flag => c.name("xid_flag") { xid_flag = (c.get_uint8 != 0) },
        :ddl_flag => c.name("ddl_flag") { (c.get_uint8 != 0) },
        :ddl_table_id => c.name("ddl_table_id") { c.get_uint64 },
        :next_log_offset => c.name("next_log_offset") { c.get_uint16 },
        :prev_log_offset => c.name("prev_log_offset") { c.get_uint16 },
        :history_list_node => c.name("history_list_node") {
          Innodb::List.get_node(c)
        },
        :xid => c.name("xid") {
          if xid_flag
            {
              :format => c.name("format") { c.get_uint32 },
              :trid_len => c.name("trid_len") { c.get_uint32 },
              :bqual_len => c.name("bqual_len") { c.get_uint32 },
              :data => c.name("data") { c.get_bytes(128) },
            }
          end
        },
      }
    end
  end