Class: Innodb::Page::UndoLog
Constant Summary
collapse
- UNDO_PAGE_TYPES =
{
1 => :insert,
2 => :update,
}
- UNDO_SEGMENT_STATES =
{
1 => :active,
2 => :cached,
3 => :to_free,
4 => :to_purge,
5 => :prepared,
}
Constants inherited
from Innodb::Page
PAGE_TYPE, PAGE_TYPE_BY_VALUE, SPECIALIZED_CLASSES
Instance Attribute Summary
Attributes inherited from Innodb::Page
#space
Instance Method Summary
collapse
#calculate_checksum, #checksum, #corrupt?, #cursor, #each_region, #fil_header, handle, #initialize, #inspect, #lsn, maybe_undefined, #name, #next, #offset, parse, #pos_fil_header, #pos_fil_trailer, #pos_page_body, #prev, #size, #size_fil_header, #size_fil_trailer, #type
Constructor Details
This class inherits a constructor from Innodb::Page
Instance Method Details
#dump ⇒ Object
Dump the contents of a page for debugging purposes.
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
# File 'lib/innodb/page/undo_log.rb', line 76
def dump
super
puts "undo page header:"
pp
puts
puts "undo segment header:"
pp
puts
puts "last undo log:"
if [:last_log_offset] != 0
undo_log([:last_log_offset]).dump
end
puts
end
|
#next_address ⇒ Object
53
54
55
|
# File 'lib/innodb/page/undo_log.rb', line 53
def next_address
[:page_list_node][:next]
end
|
#pos_undo_logs ⇒ Object
20
21
22
|
# File 'lib/innodb/page/undo_log.rb', line 20
def pos_undo_logs
+
end
|
4
5
6
|
# File 'lib/innodb/page/undo_log.rb', line 4
def
+
end
|
12
13
14
|
# File 'lib/innodb/page/undo_log.rb', line 12
def
+
end
|
#prev_address ⇒ Object
49
50
51
|
# File 'lib/innodb/page/undo_log.rb', line 49
def prev_address
[:page_list_node][:prev]
end
|
8
9
10
|
# File 'lib/innodb/page/undo_log.rb', line 8
def
2 + 2 + 2 + Innodb::List::NODE_SIZE
end
|
#undo_log(pos) ⇒ Object
71
72
73
|
# File 'lib/innodb/page/undo_log.rb', line 71
def undo_log(pos)
Innodb::UndoLog.new(self, pos)
end
|
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/innodb/page/undo_log.rb', line 37
def
@undo_page_header ||=
cursor().name("undo_page_header") do |c|
{
:type => c.name("type") { UNDO_PAGE_TYPES[c.get_uint16] },
:latest_log_record_offset => c.name("latest_log_record_offset") { c.get_uint16 },
:free_offset => c.name("free_offset") { c.get_uint16 },
:page_list_node => c.name("page_list") { Innodb::List.get_node(c) },
}
end
end
|
57
58
59
60
61
62
63
64
65
66
67
68
69
|
# File 'lib/innodb/page/undo_log.rb', line 57
def
@undo_segment_header ||=
cursor().name("undo_segment_header") do |c|
{
:state => c.name("state") { UNDO_SEGMENT_STATES[c.get_uint16] },
:last_log_offset => c.name("last_log_offset") { c.get_uint16 },
:fseg => c.name("fseg") { Innodb::FsegEntry.get_inode(@space, c) },
:page_list => c.name("page_list") {
Innodb::List::UndoPage.new(@space, Innodb::List.get_base_node(c))
},
}
end
end
|