minus5_mssql 0.2.0 → 0.2.1
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/lib/minus5_mssql/adapter.rb +30 -10
- data/test/test_db_mirroring.rb +9 -2
- metadata +4 -4
data/lib/minus5_mssql/adapter.rb
CHANGED
@@ -46,7 +46,6 @@ module Minus5
|
|
46
46
|
def execute(sql)
|
47
47
|
@connection.execute(sql)
|
48
48
|
rescue TinyTds::Error => e
|
49
|
-
print "execute error #{e}\n"
|
50
49
|
connect
|
51
50
|
execute(sql)
|
52
51
|
end
|
@@ -75,7 +74,7 @@ module Minus5
|
|
75
74
|
return results if results[0].kind_of?(Hash)
|
76
75
|
data = {} #parent indexed by primary_key
|
77
76
|
results[0].each{ |row| data[row[options[:primary_key]]] = row }
|
78
|
-
options[:relations].each_with_index do |relation, index|
|
77
|
+
options[:relations].each_with_index do |relation, index|
|
79
78
|
result = results[index+1] #child result
|
80
79
|
result.each do |row|
|
81
80
|
#find parent row by foreign key and insert child row in collection
|
@@ -109,21 +108,42 @@ module Minus5
|
|
109
108
|
create table #{schema}.#{table} (#{columns_def})
|
110
109
|
SQL
|
111
110
|
end
|
112
|
-
private
|
113
111
|
|
112
|
+
def host
|
113
|
+
return @params[:host]
|
114
|
+
end
|
115
|
+
private
|
116
|
+
|
114
117
|
def connect
|
115
|
-
|
118
|
+
if mirror_defined?
|
119
|
+
unless (connect! rescue false)
|
120
|
+
to_mirror
|
121
|
+
connect!
|
122
|
+
end
|
123
|
+
else
|
124
|
+
connect!
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
#raises error on failed connection
|
129
|
+
def connect!
|
116
130
|
@connection = TinyTds::Client.new(@params)
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
131
|
+
on_connect
|
132
|
+
true
|
133
|
+
end
|
134
|
+
|
135
|
+
def on_connect
|
136
|
+
execute "set ANSI_NULLS on"
|
137
|
+
execute "set ANSI_WARNINGS on"
|
138
|
+
end
|
139
|
+
|
140
|
+
def mirror_defined?
|
141
|
+
!@params[:mirror_host].nil?
|
123
142
|
end
|
124
143
|
|
125
144
|
# Switch host and mirror_host in @params
|
126
145
|
def to_mirror
|
146
|
+
return unless mirror_defined?
|
127
147
|
host = @params[:host]
|
128
148
|
@params[:host] = @params[:mirror_host]
|
129
149
|
@params[:mirror_host] = host
|
data/test/test_db_mirroring.rb
CHANGED
@@ -44,13 +44,16 @@ class DbMirroring < Test::Unit::TestCase
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
-
def
|
47
|
+
def test_mirror_failovering
|
48
48
|
rows = @reader.read
|
49
|
+
first_server = server_name
|
49
50
|
data_test rows
|
50
|
-
pp rows
|
51
51
|
@reader.failover
|
52
52
|
rows = @reader.read
|
53
|
+
second_server = server_name
|
53
54
|
data_test rows
|
55
|
+
assert second_server != first_server
|
56
|
+
print "\nfailovering from #{first_server} to #{second_server}\n"
|
54
57
|
end
|
55
58
|
|
56
59
|
def data_test(rows)
|
@@ -61,6 +64,10 @@ class DbMirroring < Test::Unit::TestCase
|
|
61
64
|
|
62
65
|
private
|
63
66
|
|
67
|
+
def server_name
|
68
|
+
@reader.select_value "select @@servername"
|
69
|
+
end
|
70
|
+
|
64
71
|
def setup_table
|
65
72
|
@reader.execute "
|
66
73
|
if not exists(select * from sys.objects where name = 'people')
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minus5_mssql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 1
|
10
|
+
version: 0.2.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Igor Anic
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-07-
|
18
|
+
date: 2011-07-08 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|