activerecord-sqlserver-adapter 3.1.2 → 3.1.3

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,10 @@
1
1
 
2
+ * 3.1.3 *
3
+
4
+ * Distinguish between identity and primary key key columns during schema reflection. Allows us
5
+ us to only do identity inserts when technically needed. Fixes #139 [chadcf] & [joncanady]
6
+
7
+
2
8
  * 3.1.2 *
3
9
 
4
10
  * Fix SQL Azure conflicts with DBCC useroptions. Use new #user_options_xyz methods. [kazamachi]
@@ -194,6 +194,9 @@ module ActiveRecord
194
194
  END AS [is_nullable],
195
195
  CASE
196
196
  WHEN CCU.COLUMN_NAME IS NOT NULL AND TC.CONSTRAINT_TYPE = N'PRIMARY KEY' THEN 1
197
+ ELSE NULL
198
+ END AS [is_primary],
199
+ CASE
197
200
  WHEN COLUMNPROPERTY(OBJECT_ID(columns.TABLE_SCHEMA+'.'+columns.TABLE_NAME), columns.COLUMN_NAME, 'IsIdentity') = 1 THEN 1
198
201
  ELSE NULL
199
202
  END AS [is_identity]
@@ -239,6 +242,7 @@ module ActiveRecord
239
242
  match_data ? match_data[1] : nil
240
243
  end
241
244
  ci[:null] = ci[:is_nullable].to_i == 1 ; ci.delete(:is_nullable)
245
+ ci[:is_primary] = ci[:is_primary].to_i == 1
242
246
  ci[:is_identity] = ci[:is_identity].to_i == 1
243
247
  ci
244
248
  end
@@ -363,7 +367,7 @@ module ActiveRecord
363
367
  if insert_sql?(sql)
364
368
  table_name = get_table_name(sql)
365
369
  id_column = identity_column(table_name)
366
- id_column && id_column.is_integer? && sql =~ /^\s*(INSERT|EXEC sp_executesql N'INSERT)[^(]+\([^)]*\b(#{id_column.name})\b,?[^)]*\)/i ? quote_table_name(table_name) : false
370
+ id_column && sql =~ /^\s*(INSERT|EXEC sp_executesql N'INSERT)[^(]+\([^)]*\b(#{id_column.name})\b,?[^)]*\)/i ? quote_table_name(table_name) : false
367
371
  else
368
372
  false
369
373
  end
@@ -389,7 +393,7 @@ module ActiveRecord
389
393
  end
390
394
 
391
395
  def identity_column(table_name)
392
- columns(table_name).detect(&:primary) || columns(table_name).detect(&:is_identity?)
396
+ columns(table_name).detect(&:is_identity?)
393
397
  end
394
398
 
395
399
  end
@@ -3,7 +3,7 @@ module ActiveRecord
3
3
  module Sqlserver
4
4
  module Version
5
5
 
6
- VERSION = '3.1.2'.freeze
6
+ VERSION = '3.1.3'.freeze
7
7
 
8
8
  end
9
9
  end
@@ -53,7 +53,7 @@ module ActiveRecord
53
53
  def initialize(name, default, sql_type = nil, null = true, sqlserver_options = {})
54
54
  @sqlserver_options = sqlserver_options.symbolize_keys
55
55
  super(name, default, sql_type, null)
56
- @primary = @sqlserver_options[:is_identity]
56
+ @primary = @sqlserver_options[:is_identity] || @sqlserver_options[:is_primary]
57
57
  end
58
58
 
59
59
  class << self
@@ -72,6 +72,10 @@ module ActiveRecord
72
72
  @sqlserver_options[:is_identity]
73
73
  end
74
74
 
75
+ def is_primary?
76
+ @sqlserver_options[:is_primary]
77
+ end
78
+
75
79
  def is_utf8?
76
80
  !!(@sql_type =~ /nvarchar|ntext|nchar/i)
77
81
  end
@@ -289,7 +293,7 @@ module ActiveRecord
289
293
  end
290
294
 
291
295
  def primary_key(table_name)
292
- identity_column(table_name).try(:name)
296
+ identity_column(table_name).try(:name) || columns(table_name).detect(&:is_primary?).try(:name)
293
297
  end
294
298
 
295
299
  # === SQLServer Specific (DB Reflection) ======================== #
@@ -434,8 +438,8 @@ module ActiveRecord
434
438
 
435
439
  # Override this method so every connection can be configured to your needs.
436
440
  # For example:
437
- # do_execute "SET TEXTSIZE #{64.megabytes}"
438
- # do_execute "SET CONCAT_NULL_YIELDS_NULL ON"
441
+ # raw_connection_do "SET TEXTSIZE #{64.megabytes}"
442
+ # raw_connection_do "SET CONCAT_NULL_YIELDS_NULL ON"
439
443
  def configure_connection
440
444
  end
441
445
 
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: 7
4
+ hash: 5
5
5
  prerelease:
6
6
  segments:
7
7
  - 3
8
8
  - 1
9
- - 2
10
- version: 3.1.2
9
+ - 3
10
+ version: 3.1.3
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: 2011-10-24 00:00:00 -04:00
22
+ date: 2011-10-28 00:00:00 -04:00
23
23
  default_executable:
24
24
  dependencies:
25
25
  - !ruby/object:Gem::Dependency