fluent-plugin-mysql-replicator 0.5.0 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
Gem::Specification.new do |s|
|
3
3
|
s.name = "fluent-plugin-mysql-replicator"
|
4
|
-
s.version = "0.5.
|
4
|
+
s.version = "0.5.1"
|
5
5
|
s.authors = ["Kentaro Yoshida"]
|
6
6
|
s.email = ["y.ken.studio@gmail.com"]
|
7
7
|
s.homepage = "https://github.com/y-ken/fluent-plugin-mysql-replicator"
|
@@ -58,27 +58,31 @@ module Fluent
|
|
58
58
|
def poll
|
59
59
|
table_hash = Hash.new
|
60
60
|
ids = Array.new
|
61
|
+
con = get_connection()
|
62
|
+
prepared_con = get_connection()
|
61
63
|
loop do
|
62
64
|
rows_count = 0
|
63
65
|
start_time = Time.now
|
64
66
|
previous_ids = ids
|
65
67
|
current_ids = Array.new
|
66
|
-
prepared_con = get_connection()
|
67
68
|
if !@prepared_query.nil?
|
68
69
|
@prepared_query.split(/;/).each do |query|
|
69
70
|
prepared_con.query(query)
|
70
71
|
end
|
71
72
|
end
|
72
|
-
query(@query)
|
73
|
+
rows, con = query(@query, con)
|
74
|
+
rows.each do |row|
|
73
75
|
current_ids << row[@primary_key]
|
74
76
|
current_hash = Digest::SHA1.hexdigest(row.flatten.join)
|
75
77
|
row.each {|k, v| row[k] = v.to_s if v.is_a?(Time) || v.is_a?(Date) || v.is_a?(BigDecimal)}
|
76
78
|
row.select {|k, v| v.to_s.strip.match(/^SELECT/i) }.each do |k, v|
|
77
79
|
row[k] = [] unless row[k].is_a?(Array)
|
78
|
-
prepared_con
|
80
|
+
nest_rows, prepared_con = query(v.gsub(/\$\{([^\}]+)\}/, row[$1].to_s), prepared_con)
|
81
|
+
nest_rows.each do |nest_row|
|
79
82
|
nest_row.each {|k, v| nest_row[k] = v.to_s if v.is_a?(Time) || v.is_a?(Date) || v.is_a?(BigDecimal)}
|
80
83
|
row[k] << nest_row
|
81
84
|
end
|
85
|
+
prepared_con.close
|
82
86
|
end
|
83
87
|
if row[@primary_key].nil?
|
84
88
|
$log.error "mysql_replicator: missing primary_key. :tag=>#{tag} :primary_key=>#{primary_key}"
|
@@ -94,6 +98,7 @@ module Fluent
|
|
94
98
|
table_hash[row[@primary_key]] = current_hash
|
95
99
|
rows_count += 1
|
96
100
|
end
|
101
|
+
con.close
|
97
102
|
ids = current_ids
|
98
103
|
if @enable_delete
|
99
104
|
if previous_ids.empty?
|
@@ -133,8 +138,9 @@ module Fluent
|
|
133
138
|
|
134
139
|
def query(query, con = nil)
|
135
140
|
begin
|
136
|
-
|
137
|
-
|
141
|
+
con = con.nil? ? get_connection : con
|
142
|
+
con = con.ping ? con : get_connection
|
143
|
+
return con.query(query), con
|
138
144
|
rescue Exception => e
|
139
145
|
$log.warn "mysql_replicator: #{e}"
|
140
146
|
sleep @interval
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-mysql-replicator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-09
|
12
|
+
date: 2015-11-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|