fluent-plugin-mysql-bulk 0.0.7 → 0.0.8

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 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