fluent-plugin-mysql-bulk 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 886dbd4e7ef43697589ffcd1639220d1426a1149
4
- data.tar.gz: 22a2b6378c7b48abfae9192ecdd5a92207db1ce0
3
+ metadata.gz: f6f577ec221a9e485356e48119e3c72df67d37f2
4
+ data.tar.gz: 025e392216bd66c322a2f7057356bd92482c9f45
5
5
  SHA512:
6
- metadata.gz: 6f5f51c11861e46b7542e7ee9dc0538fae282a06c3cfcae23c865f04e40262f478bcea78d31d0e0fd45f5b0240b31d6ef4e8c50899c2e873c5ce530ce04636ef
7
- data.tar.gz: 3c7ea8222b57c3fec34008e52915c66f49e712051954c94127272e010ccb19ca8e089c0f3daf5d04a8de6e8d185edef3f3a9e5f3afd9171038c6624d7d6907ef
6
+ metadata.gz: 0612ab3f00abc23d835c7213b29d412a752845a0a8d4e2a2663c46d55a3bbb8e278cb095ab628a2409e41645a9e90c054f6f8e2c6bf989e8fa060f7f6913f01c
7
+ data.tar.gz: b9a9a84b4172a2ccd48874621a6980443ecdec9b229ef5b4e422f50fc33dadadfaa8675a8d9e306aa6017d8235aa825512df805ab2a313394e524926d1e7c5bc
data/.gitignore CHANGED
@@ -16,3 +16,5 @@ test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
18
  test.conf
19
+ vendor/
20
+ tmp/
@@ -1,9 +1,10 @@
1
1
  rvm:
2
- - 1.9.2
3
2
  - 1.9.3
4
3
  - 2.0.0
5
4
  - 2.1
6
5
  - 2.2
7
6
  gemfile:
8
7
  - Gemfile
8
+ before_install:
9
+ - gem update bundler
9
10
  script: "rake test"
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |gem|
3
3
  gem.name = "fluent-plugin-mysql-bulk"
4
- gem.version = "0.0.7"
4
+ gem.version = "0.0.8"
5
5
  gem.authors = ["Hiroshi Toyama"]
6
6
  gem.email = ["toyama0919@gmail.com"]
7
7
  gem.description = %q{fluent plugin mysql bulk insert is high performance and on duplicate key update respond.}
@@ -39,7 +39,7 @@ module Fluent
39
39
  @on_duplicate_key_update_sql = ' ON DUPLICATE KEY UPDATE '
40
40
  updates = []
41
41
  @on_duplicate_update_keys.each do |update_column|
42
- updates.push(" #{update_column} = VALUES(#{update_column})")
42
+ updates << "#{update_column} = VALUES(#{update_column})"
43
43
  end
44
44
  @on_duplicate_key_update_sql += updates.join(',')
45
45
  end
@@ -85,17 +85,16 @@ module Fluent
85
85
 
86
86
  def write(chunk)
87
87
  @handler = client
88
- values_templates = []
89
88
  values = []
89
+ values_template = "(#{ @column_names.map { |key| '?' }.join(',') })"
90
90
  chunk.msgpack_each do |tag, time, data|
91
- values_templates << "(#{ @column_names.map { |key| '?' }.join(',') })"
92
- values.concat(data)
91
+ values << Mysql2::Client.pseudo_bind(values_template, data)
93
92
  end
94
- sql = "INSERT INTO #{@table} (#{@column_names.join(',')}) VALUES #{values_templates.join(',')}"
93
+ sql = "INSERT INTO #{@table} (#{@column_names.join(',')}) VALUES #{values.join(',')}"
95
94
  sql += @on_duplicate_key_update_sql if @on_duplicate_key_update
96
95
 
97
- $log.info "bulk insert values size => #{values_templates.size}"
98
- @handler.xquery(sql, values)
96
+ $log.info "bulk insert values size => #{values.size}"
97
+ @handler.xquery(sql)
99
98
  @handler.close
100
99
  end
101
100
 
@@ -7,7 +7,18 @@ class MysqlBulkOutputTest < Test::Unit::TestCase
7
7
  end
8
8
 
9
9
  def create_driver(conf = CONFIG, tag = 'test')
10
- Fluent::Test::BufferedOutputTestDriver.new(Fluent::MysqlBulkOutput, tag).configure(conf)
10
+ d = Fluent::Test::BufferedOutputTestDriver.new(Fluent::MysqlBulkOutput, tag).configure(conf)
11
+ d.instance.instance_eval {
12
+ def client
13
+ obj = Object.new
14
+ obj.instance_eval {
15
+ def xquery(*args); [1]; end
16
+ def close; true; end
17
+ }
18
+ obj
19
+ end
20
+ }
21
+ d
11
22
  end
12
23
 
13
24
  def test_configure_error
@@ -102,4 +113,45 @@ class MysqlBulkOutputTest < Test::Unit::TestCase
102
113
  ]
103
114
  end
104
115
  end
116
+
117
+ def test_variables
118
+ d = create_driver %[
119
+ database test_app_development
120
+ username root
121
+ password hogehoge
122
+ column_names id,user_name,created_at,updated_at
123
+ table users
124
+ on_duplicate_key_update true
125
+ on_duplicate_update_keys user_name,updated_at
126
+ ]
127
+
128
+ assert_equal ['id','user_name','created_at','updated_at'], d.instance.key_names
129
+ assert_equal ['id','user_name','created_at','updated_at'], d.instance.column_names
130
+ assert_equal " ON DUPLICATE KEY UPDATE user_name = VALUES(user_name),updated_at = VALUES(updated_at)", d.instance.instance_variable_get(:@on_duplicate_key_update_sql)
131
+
132
+ d = create_driver %[
133
+ database test_app_development
134
+ username root
135
+ password hogehoge
136
+ column_names id,user_name,created_at,updated_at
137
+ table users
138
+ ]
139
+
140
+ assert_equal ['id','user_name','created_at','updated_at'], d.instance.key_names
141
+ assert_equal ['id','user_name','created_at','updated_at'], d.instance.column_names
142
+ assert_nil d.instance.instance_variable_get(:@on_duplicate_key_update_sql)
143
+
144
+ d = create_driver %[
145
+ database test_app_development
146
+ username root
147
+ password hogehoge
148
+ key_names id,user_name,created_at,updated_at
149
+ column_names id,user,created_date,updated_date
150
+ table users
151
+ ]
152
+
153
+ assert_equal ['id','user_name','created_at','updated_at'], d.instance.key_names
154
+ assert_equal ['id','user','created_date','updated_date'], d.instance.column_names
155
+ assert_nil d.instance.instance_variable_get(:@on_duplicate_key_update_sql)
156
+ end
105
157
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-mysql-bulk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hiroshi Toyama
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-19 00:00:00.000000000 Z
11
+ date: 2016-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd