rubyrep 1.1.1 → 1.1.2
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.
- data/History.txt +4 -0
- data/lib/rubyrep/configuration.rb +2 -2
- data/lib/rubyrep/replication_extenders/mysql_replication.rb +1 -1
- data/lib/rubyrep/replication_extenders/postgresql_replication.rb +1 -1
- data/lib/rubyrep/version.rb +1 -1
- data/spec/strange_name_support_spec.rb +35 -1
- data/tasks/database.rake +10 -0
- metadata +36 -17
data/History.txt
CHANGED
@@ -19,8 +19,8 @@ module RR
|
|
19
19
|
# * a logger instance itself (Logger or Log4r::Logger) or
|
20
20
|
# * the parameter to create a Logger with Logger.new
|
21
21
|
# Examples:
|
22
|
-
#
|
23
|
-
#
|
22
|
+
# config.left[:logger] = STDOUT
|
23
|
+
# config.right[:logger] = Logger.new('rubyrep_debug.log')
|
24
24
|
attr_accessor :right
|
25
25
|
|
26
26
|
# Returns true unless running on windows...
|
@@ -39,7 +39,7 @@ module RR
|
|
39
39
|
# * +params+: the parameter hash as described in #create_rep_trigger
|
40
40
|
def key_clause(trigger_var, params)
|
41
41
|
"concat_ws('#{params[:key_sep]}', " +
|
42
|
-
params[:keys].map { |key| "'#{key}', #{trigger_var}.#{key}"}.join(", ") +
|
42
|
+
params[:keys].map { |key| "'#{key}', #{trigger_var}.#{quote_column_name(key)}"}.join(", ") +
|
43
43
|
")"
|
44
44
|
end
|
45
45
|
private :key_clause
|
@@ -10,7 +10,7 @@ module RR
|
|
10
10
|
# * +params+: the parameter hash as described in #create_rep_trigger
|
11
11
|
def key_clause(trigger_var, params)
|
12
12
|
params[:keys].
|
13
|
-
map { |key| "'#{key}#{params[:key_sep]}' || #{trigger_var}.#{key}"}.
|
13
|
+
map { |key| "'#{key}#{params[:key_sep]}' || #{trigger_var}.#{quote_column_name(key)}"}.
|
14
14
|
join(" || '#{params[:key_sep]}' || ")
|
15
15
|
end
|
16
16
|
private :key_clause
|
data/lib/rubyrep/version.rb
CHANGED
@@ -64,7 +64,7 @@ describe "Unusual table and column name support" do
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
-
it "should support trigger operations" do
|
67
|
+
it "should support trigger operations for strange tables" do
|
68
68
|
trigger_name = 'rr_' + STRANGE_TABLE
|
69
69
|
session = Session.new
|
70
70
|
begin
|
@@ -98,4 +98,38 @@ describe "Unusual table and column name support" do
|
|
98
98
|
session.left.execute "delete from rr_pending_changes"
|
99
99
|
end
|
100
100
|
end
|
101
|
+
|
102
|
+
it "should support trigger operations for table with strange primary keys" do
|
103
|
+
trigger_name = 'rr_table_with_strange_key'
|
104
|
+
session = Session.new
|
105
|
+
begin
|
106
|
+
session.left.replication_trigger_exists?(trigger_name, :table_with_strange_key).should be_false
|
107
|
+
session.left.create_replication_trigger({
|
108
|
+
:trigger_name => trigger_name,
|
109
|
+
:table => :table_with_strange_key,
|
110
|
+
:keys => [STRANGE_COLUMN],
|
111
|
+
:log_table => 'rr_pending_changes',
|
112
|
+
:activity_table => 'rr_running_flags',
|
113
|
+
:key_sep => '|',
|
114
|
+
:exclude_rr_activity => true
|
115
|
+
})
|
116
|
+
session.left.replication_trigger_exists?(trigger_name, :table_with_strange_key).should be_true
|
117
|
+
session.left.insert_record 'table_with_strange_key', {
|
118
|
+
STRANGE_COLUMN => '11'
|
119
|
+
}
|
120
|
+
log_record = session.left.select_one(
|
121
|
+
"select * from rr_pending_changes where change_table = 'table_with_strange_key'")
|
122
|
+
log_record['change_key'].should == "#{STRANGE_COLUMN}|11"
|
123
|
+
log_record['change_type'].should == 'I'
|
124
|
+
|
125
|
+
session.left.drop_replication_trigger trigger_name, :table_with_strange_key
|
126
|
+
session.left.replication_trigger_exists?(trigger_name, :table_with_strange_key).should be_false
|
127
|
+
ensure
|
128
|
+
if session.left.replication_trigger_exists?(trigger_name, :table_with_strange_key)
|
129
|
+
session.left.drop_replication_trigger trigger_name, :table_with_strange_key
|
130
|
+
end
|
131
|
+
session.left.execute "delete from #{session.left.quote_table_name(:table_with_strange_key)}"
|
132
|
+
session.left.execute "delete from rr_pending_changes"
|
133
|
+
end
|
134
|
+
end
|
101
135
|
end
|
data/tasks/database.rake
CHANGED
@@ -271,6 +271,15 @@ def create_sample_schema(database, config)
|
|
271
271
|
return name, nil
|
272
272
|
end
|
273
273
|
|
274
|
+
create_table :table_with_strange_key, :id => false do |t|
|
275
|
+
t.column STRANGE_COLUMN, :integer
|
276
|
+
end
|
277
|
+
|
278
|
+
ActiveRecord::Base.connection.execute(<<-end_sql)
|
279
|
+
ALTER TABLE table_with_strange_key ADD CONSTRAINT table_with_strange_key_pkey
|
280
|
+
PRIMARY KEY (#{ActiveRecord::Base.connection.quote_column_name(STRANGE_COLUMN)})
|
281
|
+
end_sql
|
282
|
+
|
274
283
|
create_table STRANGE_TABLE do |t|
|
275
284
|
t.column :first_fk, :integer
|
276
285
|
t.column :second_fk, :integer
|
@@ -330,6 +339,7 @@ def drop_sample_schema(config)
|
|
330
339
|
ActiveRecord::Schema.define do
|
331
340
|
drop_table :rr_referencing rescue nil
|
332
341
|
drop_table :rr_duplicate rescue nil
|
342
|
+
drop_table :table_with_strange_key rescue nil
|
333
343
|
drop_table STRANGE_TABLE rescue nil
|
334
344
|
drop_table :extender_type_check rescue nil
|
335
345
|
drop_table :extender_no_record rescue nil
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubyrep
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 1
|
7
|
+
- 1
|
8
|
+
- 2
|
9
|
+
version: 1.1.2
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Arndt Lehmann
|
@@ -9,39 +14,51 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-
|
17
|
+
date: 2010-05-10 00:00:00 +09:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: activesupport
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - ">="
|
22
26
|
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 2
|
29
|
+
- 3
|
30
|
+
- 5
|
23
31
|
version: 2.3.5
|
24
|
-
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
25
34
|
- !ruby/object:Gem::Dependency
|
26
35
|
name: activerecord
|
27
|
-
|
28
|
-
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
38
|
requirements:
|
31
39
|
- - ">="
|
32
40
|
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 2
|
43
|
+
- 3
|
44
|
+
- 5
|
33
45
|
version: 2.3.5
|
34
|
-
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id002
|
35
48
|
- !ruby/object:Gem::Dependency
|
36
49
|
name: hoe
|
37
|
-
|
38
|
-
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
40
52
|
requirements:
|
41
53
|
- - ">="
|
42
54
|
- !ruby/object:Gem::Version
|
55
|
+
segments:
|
56
|
+
- 2
|
57
|
+
- 4
|
58
|
+
- 0
|
43
59
|
version: 2.4.0
|
44
|
-
|
60
|
+
type: :development
|
61
|
+
version_requirements: *id003
|
45
62
|
description: Asynchronous master-master replication of relational databases.
|
46
63
|
email: mail@arndtlehman.com
|
47
64
|
executables:
|
@@ -219,18 +236,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
219
236
|
requirements:
|
220
237
|
- - ">="
|
221
238
|
- !ruby/object:Gem::Version
|
239
|
+
segments:
|
240
|
+
- 0
|
222
241
|
version: "0"
|
223
|
-
version:
|
224
242
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
225
243
|
requirements:
|
226
244
|
- - ">="
|
227
245
|
- !ruby/object:Gem::Version
|
246
|
+
segments:
|
247
|
+
- 0
|
228
248
|
version: "0"
|
229
|
-
version:
|
230
249
|
requirements: []
|
231
250
|
|
232
251
|
rubyforge_project: rubyrep
|
233
|
-
rubygems_version: 1.3.
|
252
|
+
rubygems_version: 1.3.6
|
234
253
|
signing_key:
|
235
254
|
specification_version: 3
|
236
255
|
summary: Asynchronous master-master replication of relational databases.
|