flydata 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/flydata.gemspec +3 -2
- data/lib/flydata/command/sync.rb +4 -2
- data/spec/flydata/command/sync_spec.rb +49 -0
- data/spec/flydata/table_def/mysqldump_test_foreign_key.dump +48 -0
- metadata +4 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.5
|
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.1.
|
8
|
+
s.version = "0.1.5"
|
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"]
|
12
|
-
s.date = "2014-05-
|
12
|
+
s.date = "2014-05-17"
|
13
13
|
s.description = "FlyData Command Line Interface"
|
14
14
|
s.email = "sysadmin@flydata.co"
|
15
15
|
s.executables = ["fdmysqldump", "flydata"]
|
@@ -73,6 +73,7 @@ Gem::Specification.new do |s|
|
|
73
73
|
"spec/flydata/fluent-plugins/in_mysql_binlog_flydata_spec.rb",
|
74
74
|
"spec/flydata/heroku_spec.rb",
|
75
75
|
"spec/flydata/table_def/mysql_table_def_spec.rb",
|
76
|
+
"spec/flydata/table_def/mysqldump_test_foreign_key.dump",
|
76
77
|
"spec/flydata/table_def/mysqldump_test_table_all.dump",
|
77
78
|
"spec/flydata/table_def/mysqldump_test_table_column_comment.dump",
|
78
79
|
"spec/flydata/table_def/mysqldump_test_table_enum.dump",
|
data/lib/flydata/command/sync.rb
CHANGED
@@ -929,10 +929,12 @@ EOT
|
|
929
929
|
index += 1
|
930
930
|
if chars.start_with?("'")
|
931
931
|
# single item (not last item)
|
932
|
-
|
932
|
+
# size check added below otherwise end_with? matches the single quote which was also used by start_with?
|
933
|
+
if chars.size > 1 and chars.end_with?("'") and !last_char_escaped?(chars)
|
933
934
|
@values << replace_escape_char(chars[1..-2])
|
934
935
|
# single item (last item)
|
935
|
-
|
936
|
+
# size check added below otherwise end_with? matches the single quote which was also used by start_with?
|
937
|
+
elsif chars.size > 2 and chars.end_with?("')") and !last_char_escaped?(chars[0..-2])
|
936
938
|
@values << replace_escape_char(chars[1..-3])
|
937
939
|
@values_set << @values
|
938
940
|
@values = []
|
@@ -1162,6 +1162,55 @@ EOT
|
|
1162
1162
|
expect(subject).to eq([['1',"D:\\download\\",'2014-04-15 13:49:14']])
|
1163
1163
|
end
|
1164
1164
|
end
|
1165
|
+
|
1166
|
+
context 'when comma is the first character of a string' do
|
1167
|
+
let(:target_line) { "INSERT INTO `test_table` VALUES (1,',9','2014-04-15 13:49:14');" }
|
1168
|
+
it 'should parse the string correctly' do
|
1169
|
+
expect(subject).to eq([['1',',9','2014-04-15 13:49:14']])
|
1170
|
+
end
|
1171
|
+
end
|
1172
|
+
|
1173
|
+
context 'when comma is the last character of a string' do
|
1174
|
+
let(:target_line) { "INSERT INTO `test_table` VALUES (1,'9,','2014-04-15 13:49:14');" }
|
1175
|
+
it 'should parse the string correctly' do
|
1176
|
+
expect(subject).to eq([['1','9,','2014-04-15 13:49:14']])
|
1177
|
+
end
|
1178
|
+
end
|
1179
|
+
|
1180
|
+
context 'when a string consists of a comma' do
|
1181
|
+
let(:target_line) { "INSERT INTO `test_table` VALUES (1,',','2014-04-15 13:49:14');" }
|
1182
|
+
it 'should parse the string correctly' do
|
1183
|
+
expect(subject).to eq([['1',',','2014-04-15 13:49:14']])
|
1184
|
+
end
|
1185
|
+
end
|
1186
|
+
|
1187
|
+
context 'when two commas are given as a string' do
|
1188
|
+
let(:target_line) { "INSERT INTO `test_table` VALUES (1,',,','2014-04-15 13:49:14');" }
|
1189
|
+
it 'should parse the string correctly' do
|
1190
|
+
expect(subject).to eq([['1',',,','2014-04-15 13:49:14']])
|
1191
|
+
end
|
1192
|
+
end
|
1193
|
+
|
1194
|
+
context 'when an empty string value is given' do
|
1195
|
+
let(:target_line) { "INSERT INTO `test_table` VALUES (1,'','2014-04-15 13:49:14');" }
|
1196
|
+
it 'should parse the string correctly' do
|
1197
|
+
expect(subject).to eq([['1','','2014-04-15 13:49:14']])
|
1198
|
+
end
|
1199
|
+
end
|
1200
|
+
|
1201
|
+
context 'when a value consists of a comma followed by closing bracket' do
|
1202
|
+
let(:target_line) { "INSERT INTO `test_table` VALUES (1,'),ksd','2014-04-15 13:49:14');" }
|
1203
|
+
it 'should parse the string correctly' do
|
1204
|
+
expect(subject).to eq([['1','),ksd','2014-04-15 13:49:14']])
|
1205
|
+
end
|
1206
|
+
end
|
1207
|
+
|
1208
|
+
context 'when there is a white space before the closing bracket' do
|
1209
|
+
let(:target_line) { "INSERT INTO `test_table` VALUES (1,'aa','2014-04-15 13:49:14' );" }
|
1210
|
+
it 'should fail to parse. This is intentional for performance reason' do
|
1211
|
+
expect{subject}.to raise_error
|
1212
|
+
end
|
1213
|
+
end
|
1165
1214
|
end
|
1166
1215
|
end
|
1167
1216
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
-- MySQL dump 10.13 Distrib 5.1.73, for redhat-linux-gnu (x86_64)
|
2
|
+
--
|
3
|
+
-- Host: strenua.flydata.co Database: create_table_examples
|
4
|
+
-- ------------------------------------------------------
|
5
|
+
-- Server version 5.6.17-1+deb.sury.org~precise+1-log
|
6
|
+
|
7
|
+
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
8
|
+
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
9
|
+
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
10
|
+
/*!40101 SET NAMES utf8 */;
|
11
|
+
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
12
|
+
/*!40103 SET TIME_ZONE='+00:00' */;
|
13
|
+
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
14
|
+
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
15
|
+
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
16
|
+
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
17
|
+
|
18
|
+
--
|
19
|
+
-- Table structure for table `product_order`
|
20
|
+
--
|
21
|
+
|
22
|
+
DROP TABLE IF EXISTS `product_order`;
|
23
|
+
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
24
|
+
/*!40101 SET character_set_client = utf8 */;
|
25
|
+
CREATE TABLE `product_order` (
|
26
|
+
`no` int(11) NOT NULL AUTO_INCREMENT,
|
27
|
+
`product_category` int(11) NOT NULL,
|
28
|
+
`product_id` int(11) NOT NULL,
|
29
|
+
`customer_id` int(11) NOT NULL,
|
30
|
+
PRIMARY KEY (`no`),
|
31
|
+
KEY `product_category` (`product_category`,`product_id`),
|
32
|
+
KEY `customer_id` (`customer_id`),
|
33
|
+
CONSTRAINT `product_order_ibfk_1` FOREIGN KEY (`product_category`, `product_id`) REFERENCES `product` (`category`, `id`) ON UPDATE CASCADE,
|
34
|
+
CONSTRAINT `product_order_ibfk_2` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`id`)
|
35
|
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
36
|
+
/*!40101 SET character_set_client = @saved_cs_client */;
|
37
|
+
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
38
|
+
|
39
|
+
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
40
|
+
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
41
|
+
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
42
|
+
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
43
|
+
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
44
|
+
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
45
|
+
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
46
|
+
|
47
|
+
-- Dump completed on 2014-05-15 19:47:48
|
48
|
+
|
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.1.
|
4
|
+
version: 0.1.5
|
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: 2014-05-
|
12
|
+
date: 2014-05-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-client
|
@@ -366,6 +366,7 @@ files:
|
|
366
366
|
- spec/flydata/fluent-plugins/in_mysql_binlog_flydata_spec.rb
|
367
367
|
- spec/flydata/heroku_spec.rb
|
368
368
|
- spec/flydata/table_def/mysql_table_def_spec.rb
|
369
|
+
- spec/flydata/table_def/mysqldump_test_foreign_key.dump
|
369
370
|
- spec/flydata/table_def/mysqldump_test_table_all.dump
|
370
371
|
- spec/flydata/table_def/mysqldump_test_table_column_comment.dump
|
371
372
|
- spec/flydata/table_def/mysqldump_test_table_enum.dump
|
@@ -390,7 +391,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
390
391
|
version: '0'
|
391
392
|
segments:
|
392
393
|
- 0
|
393
|
-
hash:
|
394
|
+
hash: 2175576432657099450
|
394
395
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
395
396
|
none: false
|
396
397
|
requirements:
|