fluent-plugin-mysql 0.2.0 → 0.2.1
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/fluent-plugin-mysql.gemspec +1 -1
- data/lib/fluent/plugin/out_mysql_bulk.rb +19 -2
- data/test/plugin/test_out_mysql_bulk.rb +44 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9859ad599cbae8698e0054adcbeaff3205f5a537
|
4
|
+
data.tar.gz: 96cdfad1bf8d00270b2e6ac9d8ac92b83987b326
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e15db1860fe2d5925917a6fe949459e0d3e75cddd7d57f8df3d83f497f6e55dafa634b3da94273bcae01f2d89c64e5862da4540ec649034ce1a311320b4e88bc
|
7
|
+
data.tar.gz: b1d106391be32bb63aa2dde7ade7c894fef44eab820ccf2dd7f9901160a7bfd26629469a8f089eddc80fff2d6f94d8c13a0c0343286f140eba07b987f4bd45fe
|
data/fluent-plugin-mysql.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
Gem::Specification.new do |gem|
|
3
3
|
gem.name = "fluent-plugin-mysql"
|
4
|
-
gem.version = "0.2.
|
4
|
+
gem.version = "0.2.1"
|
5
5
|
gem.authors = ["TAGOMORI Satoshi", "Toyama Hiroshi"]
|
6
6
|
gem.email = ["tagomoris@gmail.com", "toyama0919@gmail.com"]
|
7
7
|
gem.description = %q{fluent plugin to insert mysql as json(single column) or insert statement}
|
@@ -33,6 +33,8 @@ DESC
|
|
33
33
|
desc: "On duplicate key update enable."
|
34
34
|
config_param :on_duplicate_update_keys, :string, default: nil,
|
35
35
|
desc: "On duplicate key update column, comma separator."
|
36
|
+
config_param :on_duplicate_update_custom_values, :string, default: nil,
|
37
|
+
desc: "On_duplicate_update_custom_values, comma separator. specify the column name is insert value, custom value is use ${sql conditions}"
|
36
38
|
|
37
39
|
attr_accessor :handler
|
38
40
|
|
@@ -55,10 +57,25 @@ DESC
|
|
55
57
|
end
|
56
58
|
@on_duplicate_update_keys = @on_duplicate_update_keys.split(',')
|
57
59
|
|
60
|
+
if !@on_duplicate_update_custom_values.nil?
|
61
|
+
@on_duplicate_update_custom_values = @on_duplicate_update_custom_values.split(',')
|
62
|
+
if @on_duplicate_update_custom_values.length != @on_duplicate_update_keys.length
|
63
|
+
fail Fluent::ConfigError, <<-DESC
|
64
|
+
on_duplicate_update_keys and on_duplicate_update_custom_values must be the same length
|
65
|
+
DESC
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
58
69
|
@on_duplicate_key_update_sql = ' ON DUPLICATE KEY UPDATE '
|
59
70
|
updates = []
|
60
|
-
@on_duplicate_update_keys.
|
61
|
-
|
71
|
+
@on_duplicate_update_keys.each_with_index do |update_column, i|
|
72
|
+
if @on_duplicate_update_custom_values.nil? || @on_duplicate_update_custom_values[i] == "#{update_column}"
|
73
|
+
updates << "#{update_column} = VALUES(#{update_column})"
|
74
|
+
else
|
75
|
+
value = @on_duplicate_update_custom_values[i].to_s.match(/\${(.*)}/)[1]
|
76
|
+
escape_value = Mysql2::Client.escape(value)
|
77
|
+
updates << "#{update_column} = #{escape_value}"
|
78
|
+
end
|
62
79
|
end
|
63
80
|
@on_duplicate_key_update_sql += updates.join(',')
|
64
81
|
end
|
@@ -158,6 +158,20 @@ class MysqlBulkOutputTest < Test::Unit::TestCase
|
|
158
158
|
flush_interval 10s
|
159
159
|
]
|
160
160
|
end
|
161
|
+
|
162
|
+
assert_raise(Fluent::ConfigError) do
|
163
|
+
create_driver %[
|
164
|
+
host localhost
|
165
|
+
username root
|
166
|
+
password hogehoge
|
167
|
+
column_names id,user_name,login_count,created_at,updated_at
|
168
|
+
table users
|
169
|
+
on_duplicate_key_update true
|
170
|
+
on_duplicate_update_keys login_count,updated_at
|
171
|
+
on_duplicate_update_custom_values login_count
|
172
|
+
flush_interval 10s
|
173
|
+
]
|
174
|
+
end
|
161
175
|
end
|
162
176
|
|
163
177
|
def test_configure
|
@@ -222,6 +236,20 @@ class MysqlBulkOutputTest < Test::Unit::TestCase
|
|
222
236
|
table access
|
223
237
|
]
|
224
238
|
end
|
239
|
+
|
240
|
+
assert_nothing_raised(Fluent::ConfigError) do
|
241
|
+
create_driver %[
|
242
|
+
database test_app_development
|
243
|
+
username root
|
244
|
+
password hogehoge
|
245
|
+
column_names id,user_name,login_count,created_at,updated_at
|
246
|
+
key_names id,user_name,login_count,created_date,updated_date
|
247
|
+
table users
|
248
|
+
on_duplicate_key_update true
|
249
|
+
on_duplicate_update_keys login_count,updated_at
|
250
|
+
on_duplicate_update_custom_values ${`login_count` + 1},updated_at
|
251
|
+
]
|
252
|
+
end
|
225
253
|
end
|
226
254
|
|
227
255
|
def test_variables
|
@@ -281,6 +309,22 @@ class MysqlBulkOutputTest < Test::Unit::TestCase
|
|
281
309
|
assert_equal ['id','url','request_headers_json','params_json','created_date','updated_date'], d.instance.column_names
|
282
310
|
assert_equal ['request_headers','params'], d.instance.json_key_names
|
283
311
|
assert_nil d.instance.instance_variable_get(:@on_duplicate_key_update_sql)
|
312
|
+
|
313
|
+
d = create_driver %[
|
314
|
+
database test_app_development
|
315
|
+
username root
|
316
|
+
password hogehoge
|
317
|
+
column_names id,user_name,login_count,created_at,updated_at
|
318
|
+
table users
|
319
|
+
on_duplicate_key_update true
|
320
|
+
on_duplicate_update_keys login_count,updated_at
|
321
|
+
on_duplicate_update_custom_values ${`login_count` + 1},updated_at
|
322
|
+
]
|
323
|
+
|
324
|
+
assert_equal ['id','user_name','login_count','created_at','updated_at'], d.instance.key_names
|
325
|
+
assert_equal ['id','user_name','login_count','created_at','updated_at'], d.instance.column_names
|
326
|
+
assert_equal nil, d.instance.json_key_names
|
327
|
+
assert_equal " ON DUPLICATE KEY UPDATE login_count = `login_count` + 1,updated_at = VALUES(updated_at)", d.instance.instance_variable_get(:@on_duplicate_key_update_sql)
|
284
328
|
end
|
285
329
|
|
286
330
|
def test_spaces_in_columns
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-mysql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- TAGOMORI Satoshi
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-11-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fluentd
|
@@ -150,3 +150,4 @@ test_files:
|
|
150
150
|
- test/helper.rb
|
151
151
|
- test/plugin/test_out_mysql.rb
|
152
152
|
- test/plugin/test_out_mysql_bulk.rb
|
153
|
+
has_rdoc:
|