Class: Innodb::Page::SysRsegHeader
- Inherits:
-
Innodb::Page
- Object
- Innodb::Page
- Innodb::Page::SysRsegHeader
- Defined in:
- lib/innodb/page/sys_rseg_header.rb
Constant Summary collapse
- UNDO_SEGMENT_SLOTS =
The number of undo log slots in the page.
1024
Constants inherited from Innodb::Page
PAGE_TYPE, PAGE_TYPE_BY_VALUE, SPECIALIZED_CLASSES
Instance Attribute Summary
Attributes inherited from Innodb::Page
Instance Method Summary collapse
- #dump ⇒ Object
- #each_region {|{ :offset => pos_rseg_header, :length => size_rseg_header, :name => :rseg_header, :info => "Rollback Segment Header", }| ... } ⇒ Object
- #each_undo_segment ⇒ Object
- #history_list ⇒ Object
-
#pos_rseg_header ⇒ Object
The position of the rollback segment header within the page.
- #pos_undo_segment_array ⇒ Object
-
#rseg_header ⇒ Object
Parse the rollback segment header from the page.
-
#size_rseg_header ⇒ Object
The size of the rollback segment header.
- #size_undo_segment_slot ⇒ Object
Methods inherited from Innodb::Page
#calculate_checksum, #checksum, #corrupt?, #cursor, #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
86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/innodb/page/sys_rseg_header.rb', line 86 def dump super puts puts "rollback segment header:" pp rseg_header puts puts "undo segment array:" each_undo_segment do |slot, page_number| puts " #{slot}: #{page_number}" end end |
#each_region {|{ :offset => pos_rseg_header, :length => size_rseg_header, :name => :rseg_header, :info => "Rollback Segment Header", }| ... } ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/innodb/page/sys_rseg_header.rb', line 58 def each_region unless block_given? return enum_for(:each_region) end super do |region| yield region end yield({ :offset => pos_rseg_header, :length => size_rseg_header, :name => :rseg_header, :info => "Rollback Segment Header", }) (0...UNDO_SEGMENT_SLOTS).each do |slot| yield({ :offset => pos_undo_segment_array + (slot * size_undo_segment_slot), :length => size_undo_segment_slot, :name => :undo_segment_slot, :info => "Undo Segment Slot", }) end nil end |
#each_undo_segment ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/innodb/page/sys_rseg_header.rb', line 43 def each_undo_segment unless block_given? return enum_for(:each_undo_segment) end cursor(pos_undo_segment_array).name("undo_segment_array") do |c| (0...UNDO_SEGMENT_SLOTS).each do |slot| page_number = c.name("slot[#{slot}]") { Innodb::Page.maybe_undefined(c.get_uint32) } yield slot, page_number end end end |
#history_list ⇒ Object
39 40 41 |
# File 'lib/innodb/page/sys_rseg_header.rb', line 39 def history_list Innodb::HistoryList.new(rseg_header[:history_list]) end |
#pos_rseg_header ⇒ Object
The position of the rollback segment header within the page.
8 9 10 |
# File 'lib/innodb/page/sys_rseg_header.rb', line 8 def pos_rseg_header pos_fil_header + size_fil_header end |
#pos_undo_segment_array ⇒ Object
17 18 19 |
# File 'lib/innodb/page/sys_rseg_header.rb', line 17 def pos_undo_segment_array pos_rseg_header + size_rseg_header end |
#rseg_header ⇒ Object
Parse the rollback segment header from the page.
26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/innodb/page/sys_rseg_header.rb', line 26 def rseg_header cursor(pos_rseg_header).name("rseg_header") do |c| { :max_size => c.name("max_size") { c.get_uint32 }, :history_size => c.name("history_size") { c.get_uint32 }, :history_list => c.name("history_list") { Innodb::List::History.new(@space, Innodb::List.get_base_node(c)) }, :fseg => c.name("fseg") { Innodb::FsegEntry.get_inode(@space, c) }, } end end |
#size_rseg_header ⇒ Object
The size of the rollback segment header.
13 14 15 |
# File 'lib/innodb/page/sys_rseg_header.rb', line 13 def size_rseg_header 4 + 4 + Innodb::List::BASE_NODE_SIZE + Innodb::FsegEntry::SIZE end |
#size_undo_segment_slot ⇒ Object
21 22 23 |
# File 'lib/innodb/page/sys_rseg_header.rb', line 21 def size_undo_segment_slot 4 end |