mysql_binlog 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/bin/mysql_binlog_dump
CHANGED
data/lib/mysql_binlog/binlog.rb
CHANGED
@@ -39,6 +39,7 @@ module MysqlBinlog
|
|
39
39
|
attr_accessor :event_parser
|
40
40
|
attr_accessor :filter_event_types
|
41
41
|
attr_accessor :filter_flags
|
42
|
+
attr_accessor :ignore_rotate
|
42
43
|
attr_accessor :max_query_length
|
43
44
|
|
44
45
|
def initialize(reader)
|
@@ -48,6 +49,7 @@ module MysqlBinlog
|
|
48
49
|
@fde = nil
|
49
50
|
@filter_event_types = nil
|
50
51
|
@filter_flags = nil
|
52
|
+
@ignore_rotate = false
|
51
53
|
@max_query_length = 1048576
|
52
54
|
end
|
53
55
|
|
@@ -127,6 +129,7 @@ module MysqlBinlog
|
|
127
129
|
|
128
130
|
case event_type
|
129
131
|
when :rotate_event
|
132
|
+
next if ignore_rotate
|
130
133
|
reader.rotate(fields[:name], fields[:pos])
|
131
134
|
when :format_description_event
|
132
135
|
process_fde(fields)
|
@@ -251,10 +251,17 @@ module MysqlBinlog
|
|
251
251
|
when :blob, :geometry
|
252
252
|
{ :length_size => parser.read_uint8 }
|
253
253
|
when :string, :var_string
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
254
|
+
# The :string type sets a :real_type field to indicate the actual type
|
255
|
+
# which is fundamentally incompatible with :string parsing. Setting
|
256
|
+
# a :type key in this hash will cause table_map_event to override the
|
257
|
+
# main field :type with the provided type here.
|
258
|
+
real_type = MYSQL_TYPES[parser.read_uint8]
|
259
|
+
case real_type
|
260
|
+
when :enum, :set
|
261
|
+
{ :type => real_type, :size => parser.read_uint8 }
|
262
|
+
else
|
263
|
+
{ :max_length => parser.read_uint8 }
|
264
|
+
end
|
258
265
|
end
|
259
266
|
end
|
260
267
|
private :_table_map_event_column_metadata_read
|
@@ -281,6 +288,14 @@ module MysqlBinlog
|
|
281
288
|
columns_metadata = _table_map_event_column_metadata(columns_type)
|
282
289
|
columns_nullable = parser.read_bit_array(columns)
|
283
290
|
|
291
|
+
# Remap overloaded types before we piece together the entire event.
|
292
|
+
columns.times do |c|
|
293
|
+
if columns_metadata[c] and columns_metadata[c][:type]
|
294
|
+
columns_type[c] = columns_metadata[c][:type]
|
295
|
+
columns_metadata[c].delete :type
|
296
|
+
end
|
297
|
+
end
|
298
|
+
|
284
299
|
map_entry[:columns] = columns.times.map do |c|
|
285
300
|
{
|
286
301
|
:type => columns_type[c],
|
@@ -80,6 +80,23 @@ module MysqlBinlog
|
|
80
80
|
reader.read(8).unpack("Q").first
|
81
81
|
end
|
82
82
|
|
83
|
+
def read_uint_by_size(size)
|
84
|
+
case size
|
85
|
+
when 1
|
86
|
+
read_uint8
|
87
|
+
when 2
|
88
|
+
read_uint16
|
89
|
+
when 3
|
90
|
+
read_uint24
|
91
|
+
when 4
|
92
|
+
read_uint32
|
93
|
+
when 6
|
94
|
+
read_uint48
|
95
|
+
when 8
|
96
|
+
read_uint64
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
83
100
|
# Read a single-precision (4-byte) floating point number.
|
84
101
|
def read_float
|
85
102
|
reader.read(4).unpack("g").first
|
@@ -132,16 +149,7 @@ module MysqlBinlog
|
|
132
149
|
# optional size parameter (default 1), followed by the string itself with
|
133
150
|
# no termination character.
|
134
151
|
def read_lpstring(size=1)
|
135
|
-
|
136
|
-
when 1
|
137
|
-
length = read_uint8
|
138
|
-
when 2
|
139
|
-
length = read_uint16
|
140
|
-
when 3
|
141
|
-
length = read_uint24
|
142
|
-
when 4
|
143
|
-
length = read_uint32
|
144
|
-
end
|
152
|
+
length = read_uint_by_size(size)
|
145
153
|
read_nstring(length)
|
146
154
|
end
|
147
155
|
|
@@ -279,6 +287,8 @@ module MysqlBinlog
|
|
279
287
|
convert_mysql_type_time(read_uint24)
|
280
288
|
when :datetime
|
281
289
|
convert_mysql_type_datetime(read_uint64)
|
290
|
+
when :enum, :set
|
291
|
+
read_uint_by_size(metadata[:size])
|
282
292
|
#when :bit
|
283
293
|
#when :newdecimal
|
284
294
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mysql_binlog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 7
|
10
|
+
version: 0.1.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jeremy Cole
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-06-
|
18
|
+
date: 2012-06-29 00:00:00 Z
|
19
19
|
dependencies: []
|
20
20
|
|
21
21
|
description: Library for parsing MySQL binary logs in Ruby
|