Module: MysqlBinlog

Defined in:
lib/mysql_binlog.rb,
lib/mysql_binlog/binlog.rb,
lib/mysql_binlog/binlog_event_parser.rb,
lib/mysql_binlog/binlog_field_parser.rb,
lib/mysql_binlog/reader/binlog_file_reader.rb,
lib/mysql_binlog/reader/binlog_stream_reader.rb

Overview

The MysqlBinlog module contains a series of classes for reading and parsing binary log events from MySQL binary logs.

Defined Under Namespace

Classes: Binlog, BinlogEventParser, BinlogFieldParser, BinlogFileReader, BinlogStreamReader, MalformedBinlogException, ShortReadException, UnsupportedVersionException, ZeroReadException

Constant Summary collapse

EVENT_HEADER =

A common fixed-length header that is included with each event.

[
  { :name => :timestamp,        :length => 4,   :format => "V"   },
  { :name => :event_type,       :length => 1,   :format => "C"   },
  { :name => :server_id,        :length => 4,   :format => "V"   },
  { :name => :event_length,     :length => 4,   :format => "V"   },
  { :name => :next_position,    :length => 4,   :format => "V"   },
  { :name => :flags,            :length => 2,   :format => "v"   },
]
EVENT_HEADER_FLAGS =

Values for the flags field that may appear in binary logs. There are several other values that never appear in a file but may be used in events in memory.

{
  :binlog_in_use   => 0x01,
  :thread_specific => 0x04,
  :suppress_use    => 0x08,
  :artificial      => 0x20,
  :relay_log       => 0x40,
}
EVENT_TYPES =

An array to quickly map an integer event type to its symbol.

[
  :unknown_event,             #  0
  :start_event_v3,            #  1
  :query_event,               #  2
  :stop_event,                #  3
  :rotate_event,              #  4
  :intvar_event,              #  5
  :load_event,                #  6
  :slave_event,               #  7
  :create_file_event,         #  8
  :append_block_event,        #  9
  :exec_load_event,           # 10
  :delete_file_event,         # 11
  :new_load_event,            # 12
  :rand_event,                # 13
  :user_var_event,            # 14
  :format_description_event,  # 15
  :xid_event,                 # 16
  :begin_load_query_event,    # 17
  :execute_load_query_event,  # 18
  :table_map_event,           # 19
  :pre_ga_write_rows_event,   # 20
  :pre_ga_update_rows_event,  # 21
  :pre_ga_delete_rows_event,  # 22
  :write_rows_event,          # 23
  :update_rows_event,         # 24
  :delete_rows_event,         # 25
  :incident_event,            # 26
  :heartbeat_log_event,       # 27
]
QUERY_EVENT_STATUS_TYPES =

A mapping array for all values that may appear in the status field of a query_event.

[
  :flags2,                    # 0
  :sql_mode,                  # 1
  :catalog_deprecated,        # 2
  :auto_increment,            # 3
  :charset,                   # 4
  :time_zone,                 # 5
  :catalog,                   # 6
  :lc_time_names,             # 7
  :charset_database,          # 8
  :table_map_for_update,      # 9
]
QUERY_EVENT_FLAGS2 =

A mapping hash for all values that may appear in the flags2 field of a query_event.

{
  :auto_is_null           => 1 << 14,
  :not_autocommit         => 1 << 19,
  :no_foreign_key_checks  => 1 << 26,
  :relaxed_unique_checks  => 1 << 27,
}
INTVAR_EVENT_INTVAR_TYPES =

A mapping array for all values that may appear in the Intvar_type field of an intvar_event.

[
  nil,
  :last_insert_id,
  :insert_id,
]
MYSQL_TYPES_HASH =

All MySQL types mapping to their integer values.

{
  :decimal         => 0,
  :tiny            => 1,
  :short           => 2,
  :long            => 3,
  :float           => 4,
  :double          => 5,
  :null            => 6,
  :timestamp       => 7,
  :longlong        => 8,
  :int24           => 9,
  :date            => 10,
  :time            => 11,
  :datetime        => 12,
  :year            => 13,
  :newdate         => 14,
  :varchar         => 15,
  :bit             => 16,
  :newdecimal      => 246,
  :enum            => 247,
  :set             => 248,
  :tiny_blob       => 249,
  :medium_blob     => 250,
  :long_blob       => 251,
  :blob            => 252,
  :var_string      => 253,
  :string          => 254,
  :geometry        => 255,
}
MYSQL_TYPES =

All MySQL types in a simple lookup array to map an integer to its symbol.

MYSQL_TYPES_HASH.inject(Array.new(256)) do |type_array, item|
 type_array[item[1]] = item[0]
 type_array
end