activerecord-sqlserver-adapter 3.2.1 → 3.2.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/CHANGELOG CHANGED
@@ -1,4 +1,17 @@
1
1
 
2
+ * 3.2.2 *
3
+
4
+ * Fixes all known issues with cross database schema reflection. Fixes #185 [Chris Altman]
5
+
6
+ * Fix exists? with offset by patching visitor. Fixes #171 and Fixes #167
7
+
8
+ * Set default text size to 2147483647 for TinyTDS connections. Fixes #181
9
+
10
+ * Set @config ivar for 3rd party libs. Fixes #177
11
+
12
+ * Make #sql_type_for_statement work for integers that may have empty parens or none at all. Fixes #175
13
+
14
+
2
15
  * 3.2.1 *
3
16
 
4
17
  * Add explicit order-by clause for windowed results. Fixes #161.
@@ -165,7 +165,7 @@ module ActiveRecord
165
165
  columns.ordinal_position,
166
166
  CASE
167
167
  WHEN columns.DATA_TYPE IN ('nchar','nvarchar') THEN columns.CHARACTER_MAXIMUM_LENGTH
168
- ELSE COL_LENGTH(columns.TABLE_SCHEMA+'.'+columns.TABLE_NAME, columns.COLUMN_NAME)
168
+ ELSE COL_LENGTH('#{db_name_with_period}'+columns.TABLE_SCHEMA+'.'+columns.TABLE_NAME, columns.COLUMN_NAME)
169
169
  END AS [length],
170
170
  CASE
171
171
  WHEN columns.IS_NULLABLE = 'YES' THEN 1
@@ -175,19 +175,27 @@ module ActiveRecord
175
175
  WHEN KCU.COLUMN_NAME IS NOT NULL AND TC.CONSTRAINT_TYPE = N'PRIMARY KEY' THEN 1
176
176
  ELSE NULL
177
177
  END AS [is_primary],
178
- CASE
179
- WHEN COLUMNPROPERTY(OBJECT_ID(columns.TABLE_SCHEMA+'.'+columns.TABLE_NAME), columns.COLUMN_NAME, 'IsIdentity') = 1 THEN 1
180
- ELSE NULL
181
- END AS [is_identity]
178
+ c.is_identity AS [is_identity]
182
179
  FROM #{db_name_with_period}INFORMATION_SCHEMA.COLUMNS columns
183
- LEFT OUTER JOIN #{db_name_with_period}INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC
184
- ON TC.TABLE_NAME = columns.TABLE_NAME
185
- AND TC.CONSTRAINT_TYPE = N'PRIMARY KEY'
180
+ LEFT OUTER JOIN #{db_name_with_period}INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC
181
+ ON TC.TABLE_NAME = columns.TABLE_NAME
182
+ AND TC.CONSTRAINT_TYPE = N'PRIMARY KEY'
186
183
  LEFT OUTER JOIN #{db_name_with_period}INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU
187
184
  ON KCU.COLUMN_NAME = columns.COLUMN_NAME
188
185
  AND KCU.CONSTRAINT_NAME = TC.CONSTRAINT_NAME
189
186
  AND KCU.CONSTRAINT_CATALOG = TC.CONSTRAINT_CATALOG
190
187
  AND KCU.CONSTRAINT_SCHEMA = TC.CONSTRAINT_SCHEMA
188
+ INNER JOIN #{db_name_with_period}.sys.schemas AS s
189
+ ON s.name = columns.TABLE_SCHEMA
190
+ AND s.schema_id = s.schema_id
191
+ INNER JOIN #{db_name_with_period}.sys.objects AS o
192
+ ON s.schema_id = o.schema_id
193
+ AND o.is_ms_shipped = 0
194
+ AND o.type IN ('U', 'V')
195
+ AND o.name = columns.TABLE_NAME
196
+ INNER JOIN #{db_name_with_period}.sys.columns AS c
197
+ ON o.object_id = c.object_id
198
+ AND c.name = columns.COLUMN_NAME
191
199
  WHERE columns.TABLE_NAME = @0
192
200
  AND columns.TABLE_SCHEMA = #{table_schema.blank? ? "schema_name()" : "@1"}
193
201
  ORDER BY columns.ordinal_position
@@ -227,7 +235,6 @@ module ActiveRecord
227
235
  end
228
236
  ci[:null] = ci[:is_nullable].to_i == 1 ; ci.delete(:is_nullable)
229
237
  ci[:is_primary] = ci[:is_primary].to_i == 1
230
- ci[:is_identity] = ci[:is_identity].to_i == 1
231
238
  ci
232
239
  end
233
240
  end
@@ -3,7 +3,7 @@ module ActiveRecord
3
3
  module Sqlserver
4
4
  module Version
5
5
 
6
- VERSION = '3.2.1'
6
+ VERSION = '3.2.2'
7
7
 
8
8
  end
9
9
  end
@@ -96,7 +96,7 @@ module ActiveRecord
96
96
 
97
97
  def sql_type_for_statement
98
98
  if is_integer? || is_real?
99
- sql_type.sub(/\(\d+\)/,'')
99
+ sql_type.sub(/\((\d+)?\)/,'')
100
100
  else
101
101
  sql_type
102
102
  end
@@ -199,6 +199,7 @@ module ActiveRecord
199
199
  @schema_cache = Sqlserver::SchemaCache.new self
200
200
  @visitor = Arel::Visitors::SQLServer.new self
201
201
  # Our Responsibility
202
+ @config = config
202
203
  @connection_options = config
203
204
  connect
204
205
  @database_version = select_value 'SELECT @@version', 'SCHEMA'
@@ -438,6 +439,7 @@ module ActiveRecord
438
439
  client.execute("SET CURSOR_CLOSE_ON_COMMIT OFF").do
439
440
  client.execute("SET IMPLICIT_TRANSACTIONS OFF").do
440
441
  end
442
+ client.execute("SET TEXTSIZE 2147483647").do
441
443
  end
442
444
  when :odbc
443
445
  if config[:dsn].include?(';')
@@ -156,7 +156,7 @@ module Arel
156
156
  [ ("SELECT" if !windowed),
157
157
  (visit(core.set_quantifier) if core.set_quantifier),
158
158
  (visit(o.limit) if o.limit && !windowed),
159
- (projections.map{ |x| visit(x) }.join(', ')),
159
+ (projections.map{ |x| v = visit(x); v == "1" ? "1 AS [__wrp]" : v }.join(', ')),
160
160
  (source_with_lock_for_select_statement(o)),
161
161
  ("WHERE #{core.wheres.map{ |x| visit(x) }.join ' AND ' }" unless core.wheres.empty?),
162
162
  ("GROUP BY #{groups.map { |x| visit x }.join ', ' }" unless groups.empty?),
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: 13
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 3
8
8
  - 2
9
- - 1
10
- version: 3.2.1
9
+ - 2
10
+ version: 3.2.2
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: 2012-02-08 00:00:00 Z
22
+ date: 2012-04-13 00:00:00 Z
23
23
  dependencies:
24
24
  - !ruby/object:Gem::Dependency
25
25
  name: activerecord
@@ -95,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
95
  requirements: []
96
96
 
97
97
  rubyforge_project: activerecord-sqlserver-adapter
98
- rubygems_version: 1.8.15
98
+ rubygems_version: 1.8.17
99
99
  signing_key:
100
100
  specification_version: 3
101
101
  summary: SQL Server 2005 and 2008 Adapter For ActiveRecord.