activerecord-sqlserver-adapter 3.0.3 → 3.0.4
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/CHANGELOG +9 -0
- data/README.rdoc +2 -1
- data/lib/active_record/connection_adapters/sqlserver/database_statements.rb +16 -9
- data/lib/active_record/connection_adapters/sqlserver/quoting.rb +2 -10
- data/lib/active_record/connection_adapters/sqlserver/schema_statements.rb +2 -1
- data/lib/active_record/connection_adapters/sqlserver_adapter.rb +2 -23
- metadata +6 -5
data/CHANGELOG
CHANGED
@@ -1,4 +1,13 @@
|
|
1
1
|
|
2
|
+
* 3.0.4 *
|
3
|
+
|
4
|
+
* Add multiple results set support with #execute_procedure for :dblib mode. [Ken Collins]
|
5
|
+
|
6
|
+
* Simplify encoding support. [Ken Collins]
|
7
|
+
|
8
|
+
* Add binary timestamp datatype handling. [Erik Bryn]
|
9
|
+
|
10
|
+
|
2
11
|
* 3.0.3
|
3
12
|
|
4
13
|
* Add TinyTDS/dblib connection mode. [Ken Collins]
|
data/README.rdoc
CHANGED
@@ -72,12 +72,17 @@ module ActiveRecord
|
|
72
72
|
vars = variables.map{ |v| quote(v) }.join(', ')
|
73
73
|
sql = "EXEC #{proc_name} #{vars}".strip
|
74
74
|
name = 'Execute Procedure'
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
75
|
+
log(sql, name) do
|
76
|
+
case @connection_options[:mode]
|
77
|
+
when :dblib
|
78
|
+
result = @connection.execute(sql)
|
79
|
+
result.each(:as => :hash, :cache_rows => true) do |row|
|
80
|
+
r = row.with_indifferent_access
|
81
|
+
yield(r) if block_given?
|
82
|
+
end
|
83
|
+
result.each
|
84
|
+
when :odbc
|
85
|
+
results = []
|
81
86
|
raw_connection_run(sql) do |handle|
|
82
87
|
get_rows = lambda {
|
83
88
|
rows = handle_to_names_and_values handle, :fetch => :all
|
@@ -89,11 +94,13 @@ module ActiveRecord
|
|
89
94
|
get_rows.call
|
90
95
|
end
|
91
96
|
end
|
97
|
+
results.many? ? results : results.first
|
98
|
+
when :adonet
|
99
|
+
results = []
|
100
|
+
results << select(sql, name).map { |r| r.with_indifferent_access }
|
101
|
+
results.many? ? results : results.first
|
92
102
|
end
|
93
|
-
when :adonet
|
94
|
-
results << select(sql, name).map { |r| r.with_indifferent_access }
|
95
103
|
end
|
96
|
-
results.many? ? results : results.first
|
97
104
|
end
|
98
105
|
|
99
106
|
def use_database(database=nil)
|
@@ -10,8 +10,8 @@ module ActiveRecord
|
|
10
10
|
when String, ActiveSupport::Multibyte::Chars
|
11
11
|
if column && column.type == :binary
|
12
12
|
column.class.string_to_binary(value)
|
13
|
-
elsif
|
14
|
-
|
13
|
+
elsif value.is_utf8? || (column && column.type == :string)
|
14
|
+
"N'#{quote_string(value)}'"
|
15
15
|
else
|
16
16
|
super
|
17
17
|
end
|
@@ -48,14 +48,6 @@ module ActiveRecord
|
|
48
48
|
super
|
49
49
|
end
|
50
50
|
end
|
51
|
-
|
52
|
-
def quoted_utf8_value(value)
|
53
|
-
"N'#{quote_string(value)}'"
|
54
|
-
end
|
55
|
-
|
56
|
-
def quote_value_as_utf8?(value)
|
57
|
-
value.is_utf8? || enable_default_unicode_types
|
58
|
-
end
|
59
51
|
|
60
52
|
end
|
61
53
|
end
|
@@ -168,7 +168,8 @@ module ActiveRecord
|
|
168
168
|
:nchar => { :name => "nchar" },
|
169
169
|
:nvarchar => { :name => "nvarchar", :limit => 255 },
|
170
170
|
:nvarchar_max => { :name => "nvarchar(max)" },
|
171
|
-
:ntext => { :name => "ntext" }
|
171
|
+
:ntext => { :name => "ntext" },
|
172
|
+
:ss_timestamp => { :name => 'timestamp' }
|
172
173
|
})
|
173
174
|
end
|
174
175
|
|
@@ -68,38 +68,16 @@ module ActiveRecord
|
|
68
68
|
|
69
69
|
class << self
|
70
70
|
|
71
|
-
def string_to_utf8_encoding(value)
|
72
|
-
value.force_encoding('UTF-8') rescue value
|
73
|
-
end
|
74
|
-
|
75
71
|
def string_to_binary(value)
|
76
|
-
value = value.dup.force_encoding(Encoding::BINARY) if value.respond_to?(:force_encoding)
|
77
72
|
"0x#{value.unpack("H*")[0]}"
|
78
73
|
end
|
79
74
|
|
80
75
|
def binary_to_string(value)
|
81
|
-
value = value.dup.force_encoding(Encoding::BINARY) if value.respond_to?(:force_encoding)
|
82
76
|
value =~ /[^[:xdigit:]]/ ? value : [value].pack('H*')
|
83
77
|
end
|
84
78
|
|
85
79
|
end
|
86
80
|
|
87
|
-
def type_cast(value)
|
88
|
-
if value && type == :string && is_utf8?
|
89
|
-
self.class.string_to_utf8_encoding(value)
|
90
|
-
else
|
91
|
-
super
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
def type_cast_code(var_name)
|
96
|
-
if type == :string && is_utf8?
|
97
|
-
"#{self.class.name}.string_to_utf8_encoding(#{var_name})"
|
98
|
-
else
|
99
|
-
super
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
81
|
def is_identity?
|
104
82
|
@sqlserver_options[:is_identity]
|
105
83
|
end
|
@@ -156,6 +134,7 @@ module ActiveRecord
|
|
156
134
|
when /uniqueidentifier/i then :string
|
157
135
|
when /datetime/i then simplified_datetime
|
158
136
|
when /varchar\(max\)/ then :text
|
137
|
+
when /timestamp/ then :binary
|
159
138
|
else super
|
160
139
|
end
|
161
140
|
end
|
@@ -184,7 +163,7 @@ module ActiveRecord
|
|
184
163
|
include Sqlserver::Errors
|
185
164
|
|
186
165
|
ADAPTER_NAME = 'SQLServer'.freeze
|
187
|
-
VERSION = '3.0.
|
166
|
+
VERSION = '3.0.4'.freeze
|
188
167
|
DATABASE_VERSION_REGEXP = /Microsoft SQL Server\s+(\d{4})/
|
189
168
|
SUPPORTED_VERSIONS = [2005,2008].freeze
|
190
169
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-sqlserver-adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 3
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 3.0.
|
9
|
+
- 4
|
10
|
+
version: 3.0.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ken Collins
|
@@ -19,7 +19,7 @@ autorequire:
|
|
19
19
|
bindir: bin
|
20
20
|
cert_chain: []
|
21
21
|
|
22
|
-
date: 2010-10-
|
22
|
+
date: 2010-10-26 00:00:00 -04:00
|
23
23
|
default_executable:
|
24
24
|
dependencies:
|
25
25
|
- !ruby/object:Gem::Dependency
|
@@ -34,7 +34,8 @@ dependencies:
|
|
34
34
|
segments:
|
35
35
|
- 3
|
36
36
|
- 0
|
37
|
-
|
37
|
+
- 0
|
38
|
+
version: 3.0.0
|
38
39
|
type: :runtime
|
39
40
|
version_requirements: *id001
|
40
41
|
description: SQL Server 2005 and 2008 Adapter For ActiveRecord
|