class Innodb::UndoLog
Constants
- Header
- HeaderXid
Attributes
page[R]
position[R]
Public Class Methods
new(page, position)
click to toggle source
# File lib/innodb/undo_log.rb, line 31 def initialize(page, position) @page = page @position = position end
Public Instance Methods
dump()
click to toggle source
# File lib/innodb/undo_log.rb, line 150 def dump puts "header:" pp header puts end
first_undo_record_cursor()
click to toggle source
# File lib/innodb/undo_log.rb, line 146 def first_undo_record_cursor undo_record_cursor(header.log_start_offset) end
header()
click to toggle source
# File lib/innodb/undo_log.rb, line 44 def header @header ||= page.cursor(@position).name("header") do |c| header = Header.new( trx_id: c.name("trx_id") { c.read_uint64 }, trx_no: c.name("trx_no") { c.read_uint64 }, delete_mark_flag: c.name("delete_mark_flag") { (c.read_uint16 != 0) }, log_start_offset: c.name("log_start_offset") { c.read_uint16 }, xid_flag: c.name("xid_flag") { (c.read_uint8 != 0) }, ddl_flag: c.name("ddl_flag") { (c.read_uint8 != 0) }, ddl_table_id: c.name("ddl_table_id") { c.read_uint64 }, next_log_offset: c.name("next_log_offset") { c.read_uint16 }, prev_log_offset: c.name("prev_log_offset") { c.read_uint16 }, history_list_node: c.name("history_list_node") { Innodb::List.get_node(c) } ) if header.xid_flag header.xid = c.name("xid") do HeaderXid.new( format: c.name("format") { c.read_uint32 }, trid_len: c.name("trid_len") { c.read_uint32 }, bqual_len: c.name("bqual_len") { c.read_uint32 }, data: c.name("data") { c.read_bytes(128) } ) end end header end end
min_undo_record()
click to toggle source
# File lib/innodb/undo_log.rb, line 88 def min_undo_record undo_record(header.log_start_offset) end
next_address()
click to toggle source
# File lib/innodb/undo_log.rb, line 78 def next_address header.history_list_node.next end
prev_address()
click to toggle source
# File lib/innodb/undo_log.rb, line 74 def prev_address header.history_list_node.prev end
size_header()
click to toggle source
# File lib/innodb/undo_log.rb, line 40 def size_header 8 + 8 + 2 + 2 + 1 + 1 + 8 + 2 + 2 + Innodb::List::NODE_SIZE + size_xa_header end
size_xa_header()
click to toggle source
# File lib/innodb/undo_log.rb, line 36 def size_xa_header 4 + 4 + 4 + 128 end
undo_record(offset)
click to toggle source
# File lib/innodb/undo_log.rb, line 82 def undo_record(offset) new_undo_record = Innodb::UndoRecord.new(page, offset) new_undo_record.undo_log = self new_undo_record end
undo_record_cursor(offset, direction = :forward)
click to toggle source
# File lib/innodb/undo_log.rb, line 142 def undo_record_cursor(offset, direction = :forward) UndoRecordCursor.new(self, offset, direction) end