sq-dbsync 1.0.9 → 1.0.10
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 +7 -0
- data/lib/sq/dbsync/batch_load_action.rb +0 -2
- data/lib/sq/dbsync/incremental_load_action.rb +0 -2
- data/lib/sq/dbsync/load_action.rb +25 -5
- data/lib/sq/dbsync/refresh_recent_load_action.rb +0 -2
- data/lib/sq/dbsync/version.rb +1 -1
- data/spec/integration/incremental_load_action_spec.rb +0 -1
- metadata +15 -27
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 53e37af6e23d60d5272a1098971e963e5aac3858
|
4
|
+
data.tar.gz: 382ef96adfef3c9e5fc0ede936ced2d64f5bb611
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 692c020ad723ac6587f56fdfdcabc0e14441fccddc92bd2513926f1f2f61bf0f3945316f5f894667595c08a1b8fbe57e0d679bbc716483273c73ee4e5abdae48
|
7
|
+
data.tar.gz: e86c303e423f7312e13d25fa917d0886c745b49e7eaf81fbeb549649444f77cdd151397ed6a1524329d0bdc206064d366f29958ed923ed32e9f77def9e4aa749
|
@@ -66,15 +66,31 @@ module Sq::Dbsync
|
|
66
66
|
attr_reader :target, :plan, :registry, :logger, :now
|
67
67
|
|
68
68
|
def prepare
|
69
|
+
return false unless source_table_exists?
|
70
|
+
return false unless timestamp_column_exists?
|
71
|
+
|
72
|
+
add_schema_to_table_plan(plan)
|
73
|
+
plan.prefixed_table_name = (prefix + plan.table_name.to_s).to_sym
|
74
|
+
filter_columns
|
75
|
+
plan
|
76
|
+
end
|
77
|
+
|
78
|
+
def timestamp_column_exists?
|
79
|
+
columns = resolve_columns(plan, source_columns)
|
80
|
+
plan.timestamp ||= ([:updated_at, :created_at] & columns)[0]
|
81
|
+
unless plan.timestamp
|
82
|
+
logger.log("%s has no timestamp columns" % plan.source_table_name)
|
83
|
+
return false
|
84
|
+
end
|
85
|
+
true
|
86
|
+
end
|
87
|
+
|
88
|
+
def source_table_exists?
|
69
89
|
unless plan.source_db.table_exists?(plan.source_table_name)
|
70
90
|
logger.log("%s does not exist" % plan.source_table_name)
|
71
91
|
return false
|
72
92
|
end
|
73
|
-
|
74
|
-
plan.prefixed_table_name = (prefix + plan.table_name.to_s).to_sym
|
75
|
-
filter_columns
|
76
|
-
plan.timestamp ||=
|
77
|
-
([:updated_at, :created_at] & plan.columns)[0]
|
93
|
+
true
|
78
94
|
end
|
79
95
|
|
80
96
|
def ensure_target_exists
|
@@ -96,6 +112,10 @@ module Sq::Dbsync
|
|
96
112
|
end
|
97
113
|
end
|
98
114
|
|
115
|
+
def source_columns
|
116
|
+
plan.source_db.hash_schema(plan).keys
|
117
|
+
end
|
118
|
+
|
99
119
|
def extract_to_file(since)
|
100
120
|
plan.source_db.ensure_connection
|
101
121
|
plan.source_db.set_lock_timeout(10)
|
data/lib/sq/dbsync/version.rb
CHANGED
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sq-dbsync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.10
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Xavier Shay
|
@@ -10,12 +9,11 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date: 2013-
|
12
|
+
date: 2013-11-26 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: rspec
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
18
|
- - ~>
|
21
19
|
- !ruby/object:Gem::Version
|
@@ -23,7 +21,6 @@ dependencies:
|
|
23
21
|
type: :development
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
25
|
- - ~>
|
29
26
|
- !ruby/object:Gem::Version
|
@@ -31,65 +28,57 @@ dependencies:
|
|
31
28
|
- !ruby/object:Gem::Dependency
|
32
29
|
name: rake
|
33
30
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
31
|
requirements:
|
36
|
-
- -
|
32
|
+
- - '>='
|
37
33
|
- !ruby/object:Gem::Version
|
38
34
|
version: '0'
|
39
35
|
type: :development
|
40
36
|
prerelease: false
|
41
37
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
38
|
requirements:
|
44
|
-
- -
|
39
|
+
- - '>='
|
45
40
|
- !ruby/object:Gem::Version
|
46
41
|
version: '0'
|
47
42
|
- !ruby/object:Gem::Dependency
|
48
43
|
name: simplecov
|
49
44
|
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
45
|
requirements:
|
52
|
-
- -
|
46
|
+
- - '>='
|
53
47
|
- !ruby/object:Gem::Version
|
54
48
|
version: '0'
|
55
49
|
type: :development
|
56
50
|
prerelease: false
|
57
51
|
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
52
|
requirements:
|
60
|
-
- -
|
53
|
+
- - '>='
|
61
54
|
- !ruby/object:Gem::Version
|
62
55
|
version: '0'
|
63
56
|
- !ruby/object:Gem::Dependency
|
64
57
|
name: cane
|
65
58
|
requirement: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
59
|
requirements:
|
68
|
-
- -
|
60
|
+
- - '>='
|
69
61
|
- !ruby/object:Gem::Version
|
70
62
|
version: '0'
|
71
63
|
type: :development
|
72
64
|
prerelease: false
|
73
65
|
version_requirements: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
66
|
requirements:
|
76
|
-
- -
|
67
|
+
- - '>='
|
77
68
|
- !ruby/object:Gem::Version
|
78
69
|
version: '0'
|
79
70
|
- !ruby/object:Gem::Dependency
|
80
71
|
name: sequel
|
81
72
|
requirement: !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
73
|
requirements:
|
84
|
-
- -
|
74
|
+
- - '>='
|
85
75
|
- !ruby/object:Gem::Version
|
86
76
|
version: '0'
|
87
77
|
type: :runtime
|
88
78
|
prerelease: false
|
89
79
|
version_requirements: !ruby/object:Gem::Requirement
|
90
|
-
none: false
|
91
80
|
requirements:
|
92
|
-
- -
|
81
|
+
- - '>='
|
93
82
|
- !ruby/object:Gem::Version
|
94
83
|
version: '0'
|
95
84
|
description: Column based, timestamp replication of MySQL and Postgres databases.
|
@@ -145,27 +134,26 @@ files:
|
|
145
134
|
- sq-dbsync.gemspec
|
146
135
|
homepage: http://github.com/square/sq-dbsync
|
147
136
|
licenses: []
|
137
|
+
metadata: {}
|
148
138
|
post_install_message:
|
149
139
|
rdoc_options: []
|
150
140
|
require_paths:
|
151
141
|
- lib
|
152
142
|
required_ruby_version: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
143
|
requirements:
|
155
|
-
- -
|
144
|
+
- - '>='
|
156
145
|
- !ruby/object:Gem::Version
|
157
146
|
version: '0'
|
158
147
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
159
|
-
none: false
|
160
148
|
requirements:
|
161
|
-
- -
|
149
|
+
- - '>='
|
162
150
|
- !ruby/object:Gem::Version
|
163
151
|
version: '0'
|
164
152
|
requirements: []
|
165
153
|
rubyforge_project:
|
166
|
-
rubygems_version: 1.
|
154
|
+
rubygems_version: 2.1.11
|
167
155
|
signing_key:
|
168
|
-
specification_version:
|
156
|
+
specification_version: 4
|
169
157
|
summary: Column based, timestamp replication of MySQL and Postgres databases. Uses
|
170
158
|
Ruby for the glue code but pushes the heavy lifting on to the database.
|
171
159
|
test_files:
|