flydata 0.3.16 → 0.3.17
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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/flydata-core/lib/flydata-core/record/record.rb +13 -0
- data/flydata-core/lib/flydata-core/table_def/mysql_table_def.rb +107 -5
- data/flydata-core/lib/flydata-core/table_def/redshift_table_def.rb +62 -11
- data/flydata-core/spec/table_def/mysql_table_def_spec.rb +37 -1
- data/flydata-core/spec/table_def/mysql_to_redshift_table_def_spec.rb +120 -0
- data/flydata-core/spec/table_def/mysqldump_test_column_charset.dump +45 -0
- data/flydata-core/spec/table_def/redshift_table_def_spec.rb +70 -88
- data/flydata.gemspec +13 -8
- data/lib/flydata/command/setup.rb +4 -4
- data/lib/flydata/command/sync.rb +18 -29
- data/lib/flydata/compatibility_check.rb +2 -2
- data/lib/flydata/fluent-plugins/in_mysql_binlog_flydata.rb +15 -10
- data/lib/flydata/fluent-plugins/mysql/binlog_record_handler.rb +6 -3
- data/lib/flydata/fluent-plugins/mysql/dml_record_handler.rb +15 -8
- data/lib/flydata/fluent-plugins/mysql/table_meta.rb +6 -34
- data/lib/flydata/{fluent-plugins/mysql → mysql}/binlog_position.rb +2 -0
- data/lib/flydata/{util → mysql}/mysql_util.rb +34 -1
- data/lib/flydata/mysql/table_ddl.rb +118 -0
- data/lib/flydata/parser/mysql/dump_parser.rb +5 -5
- data/lib/flydata/parser/mysql/mysql_alter_table.treetop +29 -5
- data/lib/flydata/sync_file_manager.rb +15 -2
- data/spec/flydata/command/sync_spec.rb +22 -1
- data/spec/flydata/fluent-plugins/in_mysql_binlog_flydata_spec.rb +7 -2
- data/spec/flydata/fluent-plugins/mysql/dml_record_handler_spec.rb +130 -0
- data/spec/flydata/fluent-plugins/mysql/shared_query_handler_context.rb +1 -0
- data/spec/flydata/fluent-plugins/mysql/table_meta_spec.rb +14 -8
- data/spec/flydata/fluent-plugins/mysql/truncate_query_handler_spec.rb +2 -1
- data/spec/flydata/{fluent-plugins/mysql → mysql}/binlog_position_spec.rb +3 -2
- data/spec/flydata/{util → mysql}/mysql_util_spec.rb +2 -2
- data/spec/flydata/mysql/table_ddl_spec.rb +193 -0
- data/spec/flydata/parser/mysql/alter_table_parser_spec.rb +37 -9
- data/spec/flydata/sync_file_manager_spec.rb +102 -27
- metadata +12 -7
@@ -421,6 +421,24 @@ describe 'MysqlAlterTableParser' do
|
|
421
421
|
})
|
422
422
|
end
|
423
423
|
end
|
424
|
+
context 'with charset option' do
|
425
|
+
let(:length) { 45 }
|
426
|
+
let(:query) { "alter table `test_schema`.`test_table` add column `extra` varchar(#{length}) character set 'sjis' collate 'sjis_japanese_ci'" }
|
427
|
+
it do
|
428
|
+
expect(subject).to eq(
|
429
|
+
type: :alter_table,
|
430
|
+
schema_name: "test_schema",
|
431
|
+
table_name: "test_table",
|
432
|
+
actions: [{
|
433
|
+
action: :add_column,
|
434
|
+
column: "extra",
|
435
|
+
type: "varchar(#{length * 3})",
|
436
|
+
cs: "SHIFT_JIS",
|
437
|
+
query: "add column `extra` varchar(#{length}) character set 'sjis' collate 'sjis_japanese_ci'"
|
438
|
+
}])
|
439
|
+
end
|
440
|
+
end
|
441
|
+
|
424
442
|
end
|
425
443
|
|
426
444
|
context 'with alter table drop column syntax' do
|
@@ -830,10 +848,11 @@ describe 'MysqlAlterTableParser' do
|
|
830
848
|
end
|
831
849
|
end
|
832
850
|
shared_examples "test charsetname" do |*examples|
|
833
|
-
|
851
|
+
{"default"=>"DEFAULT","binary"=>"ASCII_8BIT","utf8"=>"UTF_8","latin1"=>"ISO_8859_1"}.each do |charsetname, flydata_charset|
|
834
852
|
context "charsetname is #{charsetname}" do
|
835
853
|
it_behaves_like *examples do
|
836
854
|
let(:charsetname){"#{charsetname}"}
|
855
|
+
let(:flydata_charset){flydata_charset}
|
837
856
|
end
|
838
857
|
end
|
839
858
|
end
|
@@ -1327,35 +1346,44 @@ describe 'MysqlAlterTableParser' do
|
|
1327
1346
|
it_behaves_like "test simple identifier", "test order", "a parser parsing a breaking query"
|
1328
1347
|
end
|
1329
1348
|
end
|
1349
|
+
let(:charset_action_hash) {
|
1350
|
+
{
|
1351
|
+
action: action,
|
1352
|
+
query: alter_table_action,
|
1353
|
+
cs: flydata_charset,
|
1354
|
+
}
|
1355
|
+
}
|
1330
1356
|
context "convert to charset" do
|
1331
1357
|
let(:action) { :convert_charset }
|
1358
|
+
let(:action_hash) { [charset_action_hash] }
|
1332
1359
|
context "test with collate" do
|
1333
1360
|
let(:alter_table_action) { "convert to #{charset} #{charsetname} #{collate}" }
|
1334
|
-
it_behaves_like "test charset", "test charsetname", "test collate", "a parser parsing a
|
1361
|
+
it_behaves_like "test charset", "test charsetname", "test collate", "a parser parsing a single action alter table query"
|
1335
1362
|
end
|
1336
1363
|
context "test without collate" do
|
1337
1364
|
let(:alter_table_action) { "convert to #{charset} #{charsetname}" }
|
1338
|
-
it_behaves_like "test charset", "test charsetname", "a parser parsing a
|
1365
|
+
it_behaves_like "test charset", "test charsetname", "a parser parsing a single action alter table query"
|
1339
1366
|
end
|
1340
1367
|
end
|
1341
1368
|
context "table options" do
|
1342
1369
|
context "default charset" do
|
1370
|
+
let(:action) { :default_charset }
|
1343
1371
|
context "with collate" do
|
1344
|
-
let(:action) { [:default_charset, :default_collate] }
|
1345
1372
|
let(:alter_table_action) { "#{default}#{charset}=#{charsetname} #{collate}" }
|
1346
|
-
|
1347
|
-
it_behaves_like "test optional default",
|
1373
|
+
let(:action_hash) { [charset_action_hash, {action: :default_collate, query: alter_table_action}] }
|
1374
|
+
it_behaves_like "test optional default", "test charset", "test charsetname", "test collate", "a parser parsing a single action alter table query"
|
1375
|
+
it_behaves_like "test optional default", "test charset", "test charsetname", "test collate with equals", "a parser parsing a single action alter table query"
|
1348
1376
|
end
|
1349
1377
|
context "without collate" do
|
1350
|
-
let(:action) { :default_charset }
|
1351
1378
|
let(:alter_table_action) { "#{default}#{charset} #{charsetname}" }
|
1352
|
-
|
1379
|
+
let(:action_hash) { [charset_action_hash] }
|
1380
|
+
it_behaves_like "test optional default", "test charset", "test charsetname", "a parser parsing a single action alter table query"
|
1353
1381
|
end
|
1354
1382
|
context "without charset" do
|
1355
1383
|
#The doc at http://dev.mysql.com/doc/refman/5.6/en/alter-table.html does not indicate that
|
1356
1384
|
#charset is optional. But this works (tested on mysql 5.5.38)
|
1357
|
-
let(:alter_table_action) { "#{default}#{collate}" }
|
1358
1385
|
let(:action) { :default_collate }
|
1386
|
+
let(:alter_table_action) { "#{default}#{collate}" }
|
1359
1387
|
it_behaves_like "test optional default","test collate", "a parser parsing a breaking query"
|
1360
1388
|
it_behaves_like "test optional default","test collate with equals", "a parser parsing a breaking query"
|
1361
1389
|
end
|
@@ -5,6 +5,8 @@ require 'flydata/parser/mysql/dump_parser'
|
|
5
5
|
|
6
6
|
module Flydata
|
7
7
|
describe SyncFileManager do
|
8
|
+
let(:subject_object) { described_class.new(default_data_entry) }
|
9
|
+
|
8
10
|
let(:default_mysqldump_dir) do
|
9
11
|
File.join('/tmp', "sync_dump_#{Time.now.to_i}")
|
10
12
|
end
|
@@ -35,10 +37,10 @@ module Flydata
|
|
35
37
|
"data_servers"=>"localhost:9905" }
|
36
38
|
}
|
37
39
|
end
|
38
|
-
let(:default_sfm) { SyncFileManager.new(default_data_entry) }
|
39
40
|
|
40
41
|
let (:status) { 'PARSING' }
|
41
42
|
let (:table_name) { 'test_table' }
|
43
|
+
let (:table_name2) { 'test_table2' }
|
42
44
|
let (:last_pos) { 9999 }
|
43
45
|
let (:binlog_pos) { {binfile: 'mysqlbin.00001', pos: 111} }
|
44
46
|
let (:state) { 'CREATE_TABLE' }
|
@@ -60,28 +62,28 @@ module Flydata
|
|
60
62
|
end
|
61
63
|
it do
|
62
64
|
stub_const('Flydata::FileUtil::SyncFileManager::DUMP_DIR', File.join(Flydata::FLYDATA_HOME, 'dump'))
|
63
|
-
expect(
|
65
|
+
expect(subject_object.dump_file_path).to eq(
|
64
66
|
File.join(Flydata::FLYDATA_HOME, 'dump', 'flydata_sync_mysql.dump'))
|
65
67
|
end
|
66
68
|
end
|
67
69
|
context 'when file exists' do
|
68
70
|
before { `touch #{default_mysqldump_dir}`}
|
69
71
|
it do
|
70
|
-
expect{
|
72
|
+
expect{subject_object.dump_file_path}.to raise_error
|
71
73
|
end
|
72
74
|
end
|
73
75
|
context 'when directory exists' do
|
74
76
|
before { `mkdir -p #{default_mysqldump_dir}`}
|
75
77
|
it do
|
76
78
|
expect(FileUtils).to receive(:mkdir_p).with(default_mysqldump_dir).never
|
77
|
-
expect(
|
79
|
+
expect(subject_object.dump_file_path).to eq(
|
78
80
|
File.join(default_mysqldump_dir, 'flydata_sync_mysql.dump'))
|
79
81
|
end
|
80
82
|
end
|
81
83
|
context 'when directory or file does not exist' do
|
82
84
|
it do
|
83
85
|
expect(FileUtils).to receive(:mkdir_p).with(default_mysqldump_dir).once
|
84
|
-
expect(
|
86
|
+
expect(subject_object.dump_file_path).to eq(
|
85
87
|
File.join(default_mysqldump_dir, 'flydata_sync_mysql.dump'))
|
86
88
|
end
|
87
89
|
end
|
@@ -90,23 +92,23 @@ module Flydata
|
|
90
92
|
it do
|
91
93
|
expected_dir = File.join(ENV['HOME'], default_mysqldump_dir[1..-1])
|
92
94
|
expect(FileUtils).to receive(:mkdir_p).with(expected_dir).once
|
93
|
-
expect(
|
95
|
+
expect(subject_object.dump_file_path).to eq(
|
94
96
|
File.join(expected_dir, 'flydata_sync_mysql.dump'))
|
95
97
|
end
|
96
98
|
end
|
97
99
|
end
|
98
100
|
|
99
101
|
describe '#dump_pos_path' do
|
100
|
-
it { expect(
|
102
|
+
it { expect(subject_object.dump_pos_path).to eq(
|
101
103
|
File.join(default_mysqldump_dir, 'flydata_sync_mysql.dump.pos')) }
|
102
104
|
end
|
103
105
|
|
104
106
|
describe '#save_dump_pos' do
|
105
107
|
context 'without mysql marshal data' do
|
106
108
|
it do
|
107
|
-
expect{
|
109
|
+
expect{subject_object.save_dump_pos(
|
108
110
|
status, table_name, last_pos, binlog_pos, state, substate)}.not_to raise_error
|
109
|
-
expect(
|
111
|
+
expect(subject_object.load_dump_pos).to eq({
|
110
112
|
status: status, table_name: table_name, last_pos: last_pos,
|
111
113
|
binlog_pos: binlog_pos, state: state, substate: substate,
|
112
114
|
mysql_table: nil
|
@@ -124,11 +126,11 @@ module Flydata
|
|
124
126
|
|
125
127
|
context 'with mysql marshal data' do
|
126
128
|
before do
|
127
|
-
|
128
|
-
|
129
|
+
subject_object.save_mysql_table_marshal_dump(mysql_table)
|
130
|
+
subject_object.save_dump_pos(status, table_name, last_pos, binlog_pos, state, substate)
|
129
131
|
end
|
130
132
|
it do
|
131
|
-
ret =
|
133
|
+
ret = subject_object.load_dump_pos
|
132
134
|
mt = ret.delete(:mysql_table)
|
133
135
|
expect(ret).to eq({
|
134
136
|
status: status, table_name: table_name, last_pos: last_pos,
|
@@ -148,8 +150,8 @@ module Flydata
|
|
148
150
|
let(:pos) { 107 }
|
149
151
|
let(:binlog_pos) { {binfile: binfile, pos: pos} }
|
150
152
|
it do
|
151
|
-
|
152
|
-
expect(`cat #{
|
153
|
+
subject_object.save_binlog(binlog_pos)
|
154
|
+
expect(`cat #{subject_object.binlog_path}`).to eq("#{binfile}\t#{pos}")
|
153
155
|
end
|
154
156
|
end
|
155
157
|
|
@@ -158,61 +160,61 @@ module Flydata
|
|
158
160
|
let(:pos) { 107 }
|
159
161
|
let(:binlog_pos) { {binfile: binfile, pos: pos} }
|
160
162
|
|
161
|
-
subject {
|
163
|
+
subject { subject_object.load_binlog }
|
162
164
|
|
163
165
|
context 'when binlog pos does not exist' do
|
164
166
|
before do
|
165
|
-
File.delete(
|
167
|
+
File.delete(subject_object.binlog_path) if File.exist?(subject_object.binlog_path)
|
166
168
|
end
|
167
169
|
it { is_expected.to be_nil }
|
168
170
|
end
|
169
171
|
|
170
172
|
context 'when binlog pos exists' do
|
171
173
|
before do
|
172
|
-
|
174
|
+
subject_object.save_binlog(binlog_pos)
|
173
175
|
end
|
174
176
|
it { is_expected.to eq(binlog_pos) }
|
175
177
|
end
|
176
178
|
end
|
177
179
|
|
178
180
|
describe '#binlog_path' do
|
179
|
-
it { expect(
|
181
|
+
it { expect(subject_object.binlog_path).to eq("#{FLYDATA_HOME}/flydata_sync_mysql.binlog.pos") }
|
180
182
|
end
|
181
183
|
|
182
184
|
describe '#sent_binlog_path' do
|
183
185
|
context 'with no args' do
|
184
|
-
subject {
|
186
|
+
subject { subject_object.sent_binlog_path }
|
185
187
|
it { is_expected.to eq("#{FLYDATA_HOME}/flydata_sync_mysql.binlog.sent.pos") }
|
186
188
|
end
|
187
189
|
context 'with invalid args' do
|
188
|
-
subject {
|
190
|
+
subject { subject_object.sent_binlog_path('/home/ec2-user/.flydata/flydata_sync.pos') }
|
189
191
|
it { expect{subject}.to raise_error(ArgumentError) }
|
190
192
|
end
|
191
193
|
context 'with valid args' do
|
192
|
-
subject {
|
194
|
+
subject { subject_object.sent_binlog_path('/home/ec2-user/.flydata/flydata_sync.binlog.pos') }
|
193
195
|
it { is_expected.to eq('/home/ec2-user/.flydata/flydata_sync.binlog.sent.pos') }
|
194
196
|
end
|
195
197
|
end
|
196
198
|
|
197
199
|
describe '#ssl_ca_path' do
|
198
200
|
context 'with no args' do
|
199
|
-
subject {
|
201
|
+
subject { subject_object.ssl_ca_path }
|
200
202
|
it { is_expected.to eq("#{FLYDATA_HOME}/flydata_sync_mysql.ssl_ca.pem") }
|
201
203
|
end
|
202
204
|
context 'with invalid args' do
|
203
|
-
subject {
|
205
|
+
subject { subject_object.ssl_ca_path('/home/ec2-user/.flydata/flydata_sync.pos') }
|
204
206
|
it { expect{subject}.to raise_error(ArgumentError) }
|
205
207
|
end
|
206
208
|
context 'with valid args' do
|
207
|
-
subject {
|
209
|
+
subject { subject_object.ssl_ca_path('/home/ec2-user/.flydata/flydata_sync.binlog.pos') }
|
208
210
|
it { is_expected.to eq('/home/ec2-user/.flydata/flydata_sync.ssl_ca.pem') }
|
209
211
|
end
|
210
212
|
end
|
211
213
|
|
212
214
|
describe '#save_ssl_ca_path' do
|
213
|
-
let(:ssl_ca_path) {
|
215
|
+
let(:ssl_ca_path) { subject_object.ssl_ca_path }
|
214
216
|
let(:ssl_ca_content) { 'aaaaabbbbbccccc' }
|
215
|
-
subject {
|
217
|
+
subject { subject_object.save_ssl_ca(ssl_ca_content) }
|
216
218
|
|
217
219
|
after do
|
218
220
|
File.delete(ssl_ca_path)
|
@@ -232,7 +234,7 @@ module Flydata
|
|
232
234
|
table_pos_file = "#{table_pos_dir}/#{test_table}.pos"
|
233
235
|
FileUtils.rm(table_pos_file) if File.exist?(table_pos_file)
|
234
236
|
end
|
235
|
-
subject {
|
237
|
+
subject { subject_object }
|
236
238
|
context 'when an exception happens in the block' do
|
237
239
|
let(:first_pos) { 1 }
|
238
240
|
let(:last_pos) { first_pos + 1 }
|
@@ -254,5 +256,78 @@ module Flydata
|
|
254
256
|
end
|
255
257
|
end
|
256
258
|
end
|
259
|
+
describe '#save_generated_ddl' do
|
260
|
+
subject { subject_object.save_generated_ddl(table_names, contents) }
|
261
|
+
|
262
|
+
let(:contents) { '2' }
|
263
|
+
let(:io) { double('io') }
|
264
|
+
|
265
|
+
shared_examples 'writing to per-table .generated_ddl files in positions directory' do
|
266
|
+
it do
|
267
|
+
table_name_array.each do |tn|
|
268
|
+
expect(File).to receive(:open).with("#{FLYDATA_HOME}/positions/#{tn}.generated_ddl", 'w').and_yield(io)
|
269
|
+
expect(io).to receive(:write).with(contents)
|
270
|
+
end
|
271
|
+
|
272
|
+
subject
|
273
|
+
end
|
274
|
+
end
|
275
|
+
|
276
|
+
context 'single table name' do
|
277
|
+
let(:table_names) { table_name }
|
278
|
+
let(:table_name_array) { [ table_name ] }
|
279
|
+
|
280
|
+
it_behaves_like 'writing to per-table .generated_ddl files in positions directory'
|
281
|
+
end
|
282
|
+
context 'multiple table names' do
|
283
|
+
let(:table_names) { [ table_name, table_name2 ] }
|
284
|
+
let(:table_name_array) { table_names }
|
285
|
+
|
286
|
+
it_behaves_like 'writing to per-table .generated_ddl files in positions directory'
|
287
|
+
end
|
288
|
+
end
|
289
|
+
describe "#load_generated_ddl" do
|
290
|
+
subject { subject_object.load_generated_ddl(table_names) }
|
291
|
+
|
292
|
+
let(:contents) { { table_name => '2', table_name2 => '3' } }
|
293
|
+
let(:io) { double('io') }
|
294
|
+
let(:expected_result) { table_name_array.collect{|tn| contents[tn] } }
|
295
|
+
|
296
|
+
shared_examples 'reading from per-table .generated_ddl files in positions directory' do
|
297
|
+
it do
|
298
|
+
table_name_array.each do |tn|
|
299
|
+
expect(File).to receive(:open).with("#{FLYDATA_HOME}/positions/#{tn}.generated_ddl").and_yield(io)
|
300
|
+
expect(io).to receive(:read).and_return(contents[tn])
|
301
|
+
end
|
302
|
+
|
303
|
+
is_expected.to eq expected_result
|
304
|
+
end
|
305
|
+
end
|
306
|
+
|
307
|
+
context 'single table name' do
|
308
|
+
let(:table_names) { table_name }
|
309
|
+
let(:table_name_array) { [ table_name ] }
|
310
|
+
|
311
|
+
it_behaves_like 'reading from per-table .generated_ddl files in positions directory'
|
312
|
+
end
|
313
|
+
context 'multiple table names' do
|
314
|
+
let(:table_names) { [ table_name, table_name2 ] }
|
315
|
+
let(:table_name_array) { table_names }
|
316
|
+
|
317
|
+
context 'normal case' do
|
318
|
+
it_behaves_like 'reading from per-table .generated_ddl files in positions directory'
|
319
|
+
end
|
320
|
+
context 'first file is missing' do
|
321
|
+
let(:table_name_array) { [ table_name2 ] }
|
322
|
+
let(:expected_result) { [nil, contents[table_name2]] }
|
323
|
+
|
324
|
+
let(:file_path) { "#{FLYDATA_HOME}/positions/#{table_name}.generated_ddl" }
|
325
|
+
before do
|
326
|
+
expect(File).to receive(:open).with(file_path).and_raise(Errno::ENOENT.new(file_path))
|
327
|
+
end
|
328
|
+
it_behaves_like 'reading from per-table .generated_ddl files in positions directory'
|
329
|
+
end
|
330
|
+
end
|
331
|
+
end
|
257
332
|
end
|
258
333
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flydata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Koichi Fujikawa
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2015-04-
|
15
|
+
date: 2015-04-22 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rest-client
|
@@ -470,6 +470,7 @@ files:
|
|
470
470
|
- flydata-core/lib/flydata-core/fluent-plugins/multi_buffer.rb
|
471
471
|
- flydata-core/lib/flydata-core/fluent/config_helper.rb
|
472
472
|
- flydata-core/lib/flydata-core/logger.rb
|
473
|
+
- flydata-core/lib/flydata-core/record/record.rb
|
473
474
|
- flydata-core/lib/flydata-core/table_def.rb
|
474
475
|
- flydata-core/lib/flydata-core/table_def/mysql_table_def.rb
|
475
476
|
- flydata-core/lib/flydata-core/table_def/redshift_table_def.rb
|
@@ -481,6 +482,7 @@ files:
|
|
481
482
|
- flydata-core/spec/table_def/mysql_table_def_spec.rb
|
482
483
|
- flydata-core/spec/table_def/mysql_to_redshift_table_def_spec.rb
|
483
484
|
- flydata-core/spec/table_def/mysqldump_test_bit_table.dump
|
485
|
+
- flydata-core/spec/table_def/mysqldump_test_column_charset.dump
|
484
486
|
- flydata-core/spec/table_def/mysqldump_test_foreign_key.dump
|
485
487
|
- flydata-core/spec/table_def/mysqldump_test_table_all.dump
|
486
488
|
- flydata-core/spec/table_def/mysqldump_test_table_column_comment.dump
|
@@ -525,7 +527,6 @@ files:
|
|
525
527
|
- lib/flydata/fluent-plugins/idle_event_detector.rb
|
526
528
|
- lib/flydata/fluent-plugins/in_mysql_binlog_flydata.rb
|
527
529
|
- lib/flydata/fluent-plugins/mysql/alter_table_query_handler.rb
|
528
|
-
- lib/flydata/fluent-plugins/mysql/binlog_position.rb
|
529
530
|
- lib/flydata/fluent-plugins/mysql/binlog_position_file.rb
|
530
531
|
- lib/flydata/fluent-plugins/mysql/binlog_query_dispatcher.rb
|
531
532
|
- lib/flydata/fluent-plugins/mysql/binlog_query_handler.rb
|
@@ -544,6 +545,9 @@ files:
|
|
544
545
|
- lib/flydata/heroku/configuration_methods.rb
|
545
546
|
- lib/flydata/heroku/instance_methods.rb
|
546
547
|
- lib/flydata/log_monitor.rb
|
548
|
+
- lib/flydata/mysql/binlog_position.rb
|
549
|
+
- lib/flydata/mysql/mysql_util.rb
|
550
|
+
- lib/flydata/mysql/table_ddl.rb
|
547
551
|
- lib/flydata/output/forwarder.rb
|
548
552
|
- lib/flydata/parser/mysql/dump_parser.rb
|
549
553
|
- lib/flydata/parser/mysql/mysql_alter_table.treetop
|
@@ -552,7 +556,6 @@ files:
|
|
552
556
|
- lib/flydata/proxy.rb
|
553
557
|
- lib/flydata/sync_file_manager.rb
|
554
558
|
- lib/flydata/util/encryptor.rb
|
555
|
-
- lib/flydata/util/mysql_util.rb
|
556
559
|
- spec/fluent_plugins_spec_helper.rb
|
557
560
|
- spec/fly_data_model_spec.rb
|
558
561
|
- spec/flydata/api/data_entry_spec.rb
|
@@ -578,19 +581,21 @@ files:
|
|
578
581
|
- spec/flydata/fluent-plugins/idle_event_detector_spec.rb
|
579
582
|
- spec/flydata/fluent-plugins/in_mysql_binlog_flydata_spec.rb
|
580
583
|
- spec/flydata/fluent-plugins/mysql/alter_table_query_handler_spec.rb
|
581
|
-
- spec/flydata/fluent-plugins/mysql/binlog_position_spec.rb
|
582
584
|
- spec/flydata/fluent-plugins/mysql/binlog_query_dispatcher_spec.rb
|
583
585
|
- spec/flydata/fluent-plugins/mysql/ddl_query_handler_spec.rb
|
586
|
+
- spec/flydata/fluent-plugins/mysql/dml_record_handler_spec.rb
|
584
587
|
- spec/flydata/fluent-plugins/mysql/shared_query_handler_context.rb
|
585
588
|
- spec/flydata/fluent-plugins/mysql/table_meta_spec.rb
|
586
589
|
- spec/flydata/fluent-plugins/mysql/truncate_query_handler_spec.rb
|
587
590
|
- spec/flydata/heroku_spec.rb
|
591
|
+
- spec/flydata/mysql/binlog_position_spec.rb
|
592
|
+
- spec/flydata/mysql/mysql_util_spec.rb
|
593
|
+
- spec/flydata/mysql/table_ddl_spec.rb
|
588
594
|
- spec/flydata/output/forwarder_spec.rb
|
589
595
|
- spec/flydata/parser/mysql/alter_table_parser_spec.rb
|
590
596
|
- spec/flydata/parser/mysql/dump_parser_spec.rb
|
591
597
|
- spec/flydata/sync_file_manager_spec.rb
|
592
598
|
- spec/flydata/util/encryptor_spec.rb
|
593
|
-
- spec/flydata/util/mysql_util_spec.rb
|
594
599
|
- spec/flydata_spec.rb
|
595
600
|
- spec/spec_helper.rb
|
596
601
|
- tmpl/redshift_mysql_data_entry.conf.tmpl
|
@@ -614,7 +619,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
614
619
|
version: '0'
|
615
620
|
requirements: []
|
616
621
|
rubyforge_project:
|
617
|
-
rubygems_version: 2.4.
|
622
|
+
rubygems_version: 2.4.3
|
618
623
|
signing_key:
|
619
624
|
specification_version: 4
|
620
625
|
summary: FlyData Agent
|