flydata 0.2.18 → 0.2.19
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/circle.yml +24 -0
- data/flydata-core/lib/flydata-core/table_def/redshift_table_def.rb +7 -2
- data/flydata-core/spec/table_def/redshift_table_def_spec.rb +6 -6
- data/flydata.gemspec +3 -2
- data/lib/flydata/command/sync.rb +1 -1
- data/lib/flydata/parser/mysql/mysql_alter_table.treetop +7 -0
- data/spec/flydata/command/sync_spec.rb +20 -1
- data/spec/flydata/parser/mysql/alter_table_parser_spec.rb +6 -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: eb04da6c165e8ace6ac6b7089c73eca79d2d1fc1
|
4
|
+
data.tar.gz: 77794c3f97103bd4090a70bdceb6036eb8e488ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 305c9ace6887dcf12a1fa4dd62830e41c11a87b42acd0efa06a0032b28dabccdacafc9945e9fd7b4b6d23eb872db347481ca7f605b814363a2d39c34a425340c
|
7
|
+
data.tar.gz: 76a51648a3e4ba7b363072e99c397b7b8542a0b57135cc494de51d5a4d65fda5f81cc263d0ffbe2a006e3f1e0591073187580e65f6e5ac05cebdedb22356b736
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.19
|
data/circle.yml
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
machine:
|
2
|
+
ruby:
|
3
|
+
version: 2.0.0-p481
|
4
|
+
|
5
|
+
dependencies:
|
6
|
+
pre:
|
7
|
+
- sudo dpkg -l |grep libboost|grep 1.48|awk '{print $2}'|xargs sudo apt-get purge -y
|
8
|
+
- sudo apt-get autoremove
|
9
|
+
- sudo apt-get install -y libboost-system1.54.0
|
10
|
+
- sudo apt-get install -y libboost-system1.54-dev
|
11
|
+
- sudo apt-get install -y libboost-thread1.54.0
|
12
|
+
- sudo apt-get install -y libboost-thread1.54-dev
|
13
|
+
- sudo apt-get install -y libboost1.54-dev
|
14
|
+
- wget --no-check-certificate -O mysql-replication-listener.zip https://github.com/hapyrus/mysql-replication-listener/archive/master.zip
|
15
|
+
- unzip mysql-replication-listener.zip
|
16
|
+
- cd mysql-replication-listener-master; cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DBoost_NO_BOOST_CMAKE=ON .; make -j4; sudo make install
|
17
|
+
|
18
|
+
database:
|
19
|
+
override:
|
20
|
+
- touch circle.yml
|
21
|
+
|
22
|
+
test:
|
23
|
+
override:
|
24
|
+
- bundle exec rspec
|
@@ -138,10 +138,10 @@ EOS
|
|
138
138
|
if default_value.upcase == "CURRENT_TIMESTAMP"
|
139
139
|
'SYSDATE'
|
140
140
|
else
|
141
|
-
"'#{self.parse_timestamp(default_value)}'"
|
141
|
+
"'#{self.parse_timestamp(remove_single_quote(default_value))}'"
|
142
142
|
end
|
143
143
|
when 'date'
|
144
|
-
"'#{self.parse_date(default_value)}'"
|
144
|
+
"'#{self.parse_date(remove_single_quote(default_value))}'"
|
145
145
|
else
|
146
146
|
if !default_value.kind_of?(String)
|
147
147
|
"'#{default_value}'"
|
@@ -159,6 +159,11 @@ EOS
|
|
159
159
|
end
|
160
160
|
end
|
161
161
|
|
162
|
+
def self.remove_single_quote(value)
|
163
|
+
return value unless value.kind_of?(String)
|
164
|
+
/^'.*'$/.match(value) ? value[1..-2] : value
|
165
|
+
end
|
166
|
+
|
162
167
|
def self.primary_key_sql(flydata_tabledef)
|
163
168
|
pks = flydata_tabledef[:columns].select{|col| col[:primary_key]}.collect{|col| col[:column]}
|
164
169
|
pks.empty? ? nil : " PRIMARY KEY (#{pks.join(',')})"
|
@@ -271,13 +271,13 @@ EOT
|
|
271
271
|
let(:not_null_default_sql) { " DEFAULT '0000-01-01'" }
|
272
272
|
|
273
273
|
context 'when default_value is normal' do
|
274
|
-
let(:default_value) { '2014-10-17' }
|
275
|
-
let(:default_value_sql) {
|
274
|
+
let(:default_value) { "'2014-10-17'" }
|
275
|
+
let(:default_value_sql) { default_value }
|
276
276
|
it_behaves_like *examples
|
277
277
|
end
|
278
278
|
|
279
279
|
context 'when default_value is 0000-00-00' do
|
280
|
-
let(:default_value) { '0000-00-00' }
|
280
|
+
let(:default_value) { "'0000-00-00'" }
|
281
281
|
let(:default_value_sql) { "'0001-01-01'" }
|
282
282
|
it_behaves_like *examples
|
283
283
|
end
|
@@ -292,8 +292,8 @@ EOT
|
|
292
292
|
let(:not_null_default_sql) { " DEFAULT '0000-01-01'" }
|
293
293
|
|
294
294
|
context 'when default_value is normal' do
|
295
|
-
let(:default_value) { '2014-10-17 22:22:22' }
|
296
|
-
let(:default_value_sql) { "'
|
295
|
+
let(:default_value) { "'2014-10-17 22:22:22'" }
|
296
|
+
let(:default_value_sql) { "'2014-10-17 22:22:22.000000'" }
|
297
297
|
it_behaves_like *examples
|
298
298
|
end
|
299
299
|
|
@@ -304,7 +304,7 @@ EOT
|
|
304
304
|
end
|
305
305
|
|
306
306
|
context 'when default_value is 0000-00-00 00:00:00' do
|
307
|
-
let(:default_value) { '0000-00-00 00:00:00' }
|
307
|
+
let(:default_value) { "'0000-00-00 00:00:00'" }
|
308
308
|
let(:default_value_sql) { "'0001-01-01 00:00:00.000000'" }
|
309
309
|
it_behaves_like *examples
|
310
310
|
end
|
data/flydata.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "flydata"
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.19"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Koichi Fujikawa", "Masashi Miyazaki", "Matthew Luu", "Mak Inada", "Sriram NS"]
|
12
|
-
s.date = "2014-
|
12
|
+
s.date = "2014-12-03"
|
13
13
|
s.description = "FlyData Agent"
|
14
14
|
s.email = "sysadmin@flydata.com"
|
15
15
|
s.executables = ["fdmysqldump", "flydata", "serverinfo"]
|
@@ -27,6 +27,7 @@ Gem::Specification.new do |s|
|
|
27
27
|
"bin/fdmysqldump",
|
28
28
|
"bin/flydata",
|
29
29
|
"bin/serverinfo",
|
30
|
+
"circle.yml",
|
30
31
|
"flydata-core/.gitignore",
|
31
32
|
"flydata-core/.rspec",
|
32
33
|
"flydata-core/.travis.yml",
|
data/lib/flydata/command/sync.rb
CHANGED
@@ -195,7 +195,7 @@ module Flydata
|
|
195
195
|
worker = Thread.new do
|
196
196
|
begin
|
197
197
|
flydata.data_entry.cleanup_sync(de['id'], tables)
|
198
|
-
rescue RestClient::RequestTimeout
|
198
|
+
rescue RestClient::RequestTimeout, RestClient::GatewayTimeout
|
199
199
|
# server is taking time to cleanup. Try again
|
200
200
|
retry
|
201
201
|
end
|
@@ -196,6 +196,13 @@ grammar MysqlAlterTable
|
|
196
196
|
}
|
197
197
|
end
|
198
198
|
}
|
199
|
+
/ rename_sym sp key_or_index sp field_ident sp to_sym sp field_ident {
|
200
|
+
def action
|
201
|
+
{ action: :rename_key_or_index,
|
202
|
+
support_level: :nonbreaking,
|
203
|
+
}
|
204
|
+
end
|
205
|
+
}
|
199
206
|
/ rename_sym opt_to nsp table_ident {
|
200
207
|
def action
|
201
208
|
{ action: :rename_table }
|
@@ -44,8 +44,27 @@ module Flydata
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
+
subject { Sync.new }
|
48
|
+
describe '#cleanup_sync_server' do
|
49
|
+
let(:rest_client) { double('rest_client') }
|
50
|
+
|
51
|
+
context "when rest client throws timeout errors" do
|
52
|
+
before do
|
53
|
+
allow(RestClient::Resource).to receive(:new).and_return(rest_client)
|
54
|
+
end
|
55
|
+
it "should retry in case of RestClient::RequestTimeout" do
|
56
|
+
expect(rest_client).to receive(:post).and_raise(RestClient::RequestTimeout)
|
57
|
+
expect(rest_client).to receive(:post).and_return("{}")
|
58
|
+
subject.send(:cleanup_sync_server, default_data_entry)
|
59
|
+
end
|
60
|
+
it "should retry in case of RestClient::GatewayTimeout" do
|
61
|
+
expect(rest_client).to receive(:post).and_raise(RestClient::GatewayTimeout)
|
62
|
+
expect(rest_client).to receive(:post).and_return("{}")
|
63
|
+
subject.send(:cleanup_sync_server, default_data_entry)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
47
67
|
describe '#do_generate_table_ddl' do
|
48
|
-
subject { Sync.new }
|
49
68
|
shared_examples 'throws an error' do
|
50
69
|
it "throws an error" do
|
51
70
|
expect {
|
@@ -1307,6 +1307,12 @@ describe 'MysqlAlterTableParser' do
|
|
1307
1307
|
end
|
1308
1308
|
end
|
1309
1309
|
end
|
1310
|
+
context "rename key or index" do
|
1311
|
+
let(:alter_table_action) { "rename#{key_or_index}#{identifier} TO#{identifier}" }
|
1312
|
+
let(:action) { :rename_key_or_index }
|
1313
|
+
|
1314
|
+
it_behaves_like "test key or index", "test field identifier", "a parser parsing a nonbreaking query"
|
1315
|
+
end
|
1310
1316
|
context "order by" do
|
1311
1317
|
let(:action) { :order_table }
|
1312
1318
|
context "with single column" do
|
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.2.
|
4
|
+
version: 0.2.19
|
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: 2014-
|
15
|
+
date: 2014-12-03 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rest-client
|
@@ -412,6 +412,7 @@ files:
|
|
412
412
|
- bin/fdmysqldump
|
413
413
|
- bin/flydata
|
414
414
|
- bin/serverinfo
|
415
|
+
- circle.yml
|
415
416
|
- flydata-core/.gitignore
|
416
417
|
- flydata-core/.rspec
|
417
418
|
- flydata-core/.travis.yml
|