flydata 0.6.12 → 0.6.13
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/Gemfile +1 -1
- data/Gemfile.lock +4 -4
- data/VERSION +1 -1
- data/flydata-core/lib/flydata-core/table_def/mysql_table_def.rb +2 -0
- data/flydata-core/spec/table_def/mysql_table_def_spec.rb +13 -0
- data/flydata-core/spec/table_def/mysqldump_test_table_column_comment_including_invalid_char.dump +41 -0
- data/flydata.gemspec +0 -0
- data/lib/flydata/command/sync.rb +12 -1
- data/lib/flydata/source_mysql/parser/dump_parser.rb +1 -0
- data/spec/flydata/source_mysql/parser/dump_parser_spec.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4abef5efd4f51c0f72fc28e582eb3331709e31d3
|
4
|
+
data.tar.gz: 2b457b9f88d81ea0e16fc810c1bc5a4e6a7dbf8a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6cc67ea772223bc4f8d64dadc8a2e76a118ad5de04f6e165a24696f2f3a0eefc1e1a87c052d48877664fc70bb47c7600fbe5ce8baa5f833e805402e2f95822f
|
7
|
+
data.tar.gz: ebaf4bb22696a9b0c8e5013d0792063e7e054134b721e599915562f72372fdd953f61bea596d65e4de6aedd255bcd54c2fd958ced67910979cbfb61c8a801d41
|
data/Gemfile
CHANGED
@@ -14,7 +14,7 @@ gem "slop", '~> 3.4', '>= 3.4.6'
|
|
14
14
|
gem "treetop", '~> 1.5', '>= 1.5.3'
|
15
15
|
gem "sys-filesystem", '~> 1.1', '>= 1.1.3'
|
16
16
|
gem "io-console", '~> 0.4.2', '>= 0.4.2'
|
17
|
-
gem "kodama", '~> 0.1', '>= 0.1.
|
17
|
+
gem "kodama", '~> 0.1', '>= 0.1.12'
|
18
18
|
gem "serverengine", '~> 1.5'
|
19
19
|
|
20
20
|
group :development do
|
data/Gemfile.lock
CHANGED
@@ -61,8 +61,8 @@ GEM
|
|
61
61
|
rdoc
|
62
62
|
json (1.8.1)
|
63
63
|
jwt (1.0.0)
|
64
|
-
kodama (0.1.
|
65
|
-
ruby-binlog (~> 1.0, >= 1.0.
|
64
|
+
kodama (0.1.12)
|
65
|
+
ruby-binlog (~> 1.0, >= 1.0.10)
|
66
66
|
method_source (0.8.2)
|
67
67
|
mime-types (2.3)
|
68
68
|
minitest (4.7.5)
|
@@ -108,7 +108,7 @@ GEM
|
|
108
108
|
rspec-mocks (3.0.3)
|
109
109
|
rspec-support (~> 3.0.0)
|
110
110
|
rspec-support (3.0.3)
|
111
|
-
ruby-binlog (1.0.
|
111
|
+
ruby-binlog (1.0.10)
|
112
112
|
ruby-prof (0.15.1)
|
113
113
|
serverengine (1.5.10)
|
114
114
|
sigdump (~> 0.2.2)
|
@@ -138,7 +138,7 @@ DEPENDENCIES
|
|
138
138
|
io-console (~> 0.4.2, >= 0.4.2)
|
139
139
|
jeweler (~> 1.8, >= 1.8.8)
|
140
140
|
json (~> 1.8, >= 1.8.0)
|
141
|
-
kodama (~> 0.1, >= 0.1.
|
141
|
+
kodama (~> 0.1, >= 0.1.12)
|
142
142
|
mysql2 (~> 0.3, >= 0.3.17)
|
143
143
|
pg (~> 0.18.4)
|
144
144
|
protected_attributes (~> 1.0, >= 1.0.8)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.6.
|
1
|
+
0.6.13
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'flydata-core/table_def/base'
|
2
|
+
require 'flydata-core/string_utils'
|
2
3
|
|
3
4
|
module FlydataCore
|
4
5
|
module TableDef
|
@@ -101,6 +102,7 @@ class MysqlTableDef < Base
|
|
101
102
|
position = :before_create_table
|
102
103
|
|
103
104
|
io.each_line do |line|
|
105
|
+
line = FlydataCore::StringUtils.replace_invalid_utf8_char(line)
|
104
106
|
case position
|
105
107
|
when :before_create_table
|
106
108
|
if line =~ /CREATE TABLE `(.*?)`/
|
@@ -128,6 +128,19 @@ describe MysqlTableDef do
|
|
128
128
|
]
|
129
129
|
)
|
130
130
|
end
|
131
|
+
|
132
|
+
context 'when column comment contains includes invalid chars' do
|
133
|
+
let(:dump_file_io) { file_io('mysqldump_test_table_column_comment_including_invalid_char.dump') }
|
134
|
+
it 'comment should be set with replaced chars' do
|
135
|
+
expect(subject[:columns]).to eq(
|
136
|
+
[
|
137
|
+
{:column=>"id", :type=>"int4(11)", :not_null=>true, :default=>"'0'",
|
138
|
+
:comment=>"a?2BY???i", :primary_key=>true},
|
139
|
+
{:column=>"value", :type=>"text", :comment=>"あいうえお"}
|
140
|
+
]
|
141
|
+
)
|
142
|
+
end
|
143
|
+
end
|
131
144
|
end
|
132
145
|
|
133
146
|
context 'when table has multiple pk' do
|
data/flydata-core/spec/table_def/mysqldump_test_table_column_comment_including_invalid_char.dump
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
-- MySQL dump 10.13 Distrib 5.6.13, for osx10.9 (x86_64)
|
2
|
+
--
|
3
|
+
-- Host: localhost Database: masashi_test
|
4
|
+
-- ------------------------------------------------------
|
5
|
+
-- Server version 5.6.13-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 `test_table_column_comment`
|
20
|
+
--
|
21
|
+
|
22
|
+
DROP TABLE IF EXISTS `test_table_column_comment`;
|
23
|
+
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
24
|
+
/*!40101 SET character_set_client = utf8 */;
|
25
|
+
CREATE TABLE `test_table_column_comment` (
|
26
|
+
`id` int(11) NOT NULL DEFAULT '0' COMMENT 'a�2BY���i',
|
27
|
+
`value` text COMMENT 'あいうえお',
|
28
|
+
PRIMARY KEY (`id`)
|
29
|
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='column comment test';
|
30
|
+
/*!40101 SET character_set_client = @saved_cs_client */;
|
31
|
+
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
32
|
+
|
33
|
+
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
34
|
+
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
35
|
+
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
36
|
+
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
37
|
+
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
38
|
+
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
39
|
+
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
40
|
+
|
41
|
+
-- Dump completed on 2014-04-25 13:24:35
|
data/flydata.gemspec
CHANGED
Binary file
|
data/lib/flydata/command/sync.rb
CHANGED
@@ -280,7 +280,8 @@ EOS
|
|
280
280
|
# - Entry method
|
281
281
|
def check(options = {})
|
282
282
|
context = source.source_pos
|
283
|
-
status, pos_mismatch_tables, gap_tables =
|
283
|
+
status, corrupt_master_pos_files, pos_mismatch_tables, gap_tables =
|
284
|
+
_check(context, options)
|
284
285
|
|
285
286
|
if status.include? :OK
|
286
287
|
message = "\nNo errors are found. Sync is clean.\n"
|
@@ -296,6 +297,9 @@ EOS
|
|
296
297
|
if status.include? :ABNORMAL_SHUTDOWN
|
297
298
|
message += " - Agent was not shut down correctly\n"
|
298
299
|
end
|
300
|
+
if status.include? :CORRUPT_MASTER_POS
|
301
|
+
message += " - Master source position is corrupted\n"
|
302
|
+
end
|
299
303
|
if gap_tables
|
300
304
|
message += " - Sync data is missing for the following table(s)\n"
|
301
305
|
gap_tables.each do |bt|
|
@@ -462,6 +466,13 @@ EOS
|
|
462
466
|
next
|
463
467
|
end
|
464
468
|
if tables.empty?
|
469
|
+
# Find the latest source pos to which all table data is up to date
|
470
|
+
if table_status_hash[table]["seq"] == 0
|
471
|
+
# this table's source pos is from the initial sync. It can't
|
472
|
+
# be used for determining the latest source pos because it can be
|
473
|
+
# newer than the correct cont sync source pos.
|
474
|
+
next
|
475
|
+
end
|
465
476
|
if sent_source_pos.nil? || sent_source_pos < table_source_pos
|
466
477
|
sent_source_pos = table_source_pos
|
467
478
|
end
|
@@ -332,6 +332,7 @@ EOS
|
|
332
332
|
state_create_table_columns = Proc.new do
|
333
333
|
start_pos = dump_io.pos
|
334
334
|
line = readline_proc.call
|
335
|
+
line = FlydataCore::StringUtils.replace_invalid_utf8_char(line)
|
335
336
|
|
336
337
|
# `author_type` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
|
337
338
|
if line.start_with?("\`")
|
@@ -280,7 +280,7 @@ DROP TABLE IF EXISTS `users_login`;
|
|
280
280
|
CREATE TABLE `users_login` (
|
281
281
|
`user_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'users id',
|
282
282
|
`login_count` int(10) unsigned DEFAULT '0' COMMENT 'login count',
|
283
|
-
`comment` varchar(255) DEFAULT NULL COMMENT 'comment',
|
283
|
+
`comment` varchar(255) DEFAULT NULL COMMENT 'comment\xED\xB1\x22end',
|
284
284
|
`create_time` datetime NOT NULL COMMENT 'create time',
|
285
285
|
`update_time` datetime NOT NULL COMMENT 'update time',
|
286
286
|
PRIMARY KEY (`user_id`)
|
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.6.
|
4
|
+
version: 0.6.13
|
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: 2016-03-
|
15
|
+
date: 2016-03-12 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rest-client
|
@@ -262,7 +262,7 @@ dependencies:
|
|
262
262
|
requirements:
|
263
263
|
- - '>='
|
264
264
|
- !ruby/object:Gem::Version
|
265
|
-
version: 0.1.
|
265
|
+
version: 0.1.12
|
266
266
|
- - ~>
|
267
267
|
- !ruby/object:Gem::Version
|
268
268
|
version: '0.1'
|
@@ -272,7 +272,7 @@ dependencies:
|
|
272
272
|
requirements:
|
273
273
|
- - '>='
|
274
274
|
- !ruby/object:Gem::Version
|
275
|
-
version: 0.1.
|
275
|
+
version: 0.1.12
|
276
276
|
- - ~>
|
277
277
|
- !ruby/object:Gem::Version
|
278
278
|
version: '0.1'
|
@@ -590,6 +590,7 @@ files:
|
|
590
590
|
- flydata-core/spec/table_def/mysqldump_test_foreign_key.dump
|
591
591
|
- flydata-core/spec/table_def/mysqldump_test_table_all.dump
|
592
592
|
- flydata-core/spec/table_def/mysqldump_test_table_column_comment.dump
|
593
|
+
- flydata-core/spec/table_def/mysqldump_test_table_column_comment_including_invalid_char.dump
|
593
594
|
- flydata-core/spec/table_def/mysqldump_test_table_enum.dump
|
594
595
|
- flydata-core/spec/table_def/mysqldump_test_table_multi_pk.dump
|
595
596
|
- flydata-core/spec/table_def/mysqldump_test_table_no_pk.dump
|