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