Created
October 28, 2011 14:01
-
-
Save gnarfle/1322335 to your computer and use it in GitHub Desktop.
primary key support for sqlserver adapter
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/lib/active_record/connection_adapters/sqlserver/schema_statements.rb b/lib/active_record/connection_adapters/sqlserver/schema_statements.rb | |
index 2e490a1..b2b6a87 100644 | |
--- a/lib/active_record/connection_adapters/sqlserver/schema_statements.rb | |
+++ b/lib/active_record/connection_adapters/sqlserver/schema_statements.rb | |
@@ -193,10 +193,13 @@ module ActiveRecord | |
ELSE NULL | |
END AS [is_nullable], | |
CASE | |
- WHEN CCU.COLUMN_NAME IS NOT NULL AND TC.CONSTRAINT_TYPE = N'PRIMARY KEY' THEN 1 | |
WHEN COLUMNPROPERTY(OBJECT_ID(columns.TABLE_SCHEMA+'.'+columns.TABLE_NAME), columns.COLUMN_NAME, 'IsIdentity') = 1 THEN 1 | |
ELSE NULL | |
- END AS [is_identity] | |
+ END AS [is_identity], | |
+ CASE | |
+ WHEN CCU.COLUMN_NAME IS NOT NULL AND TC.CONSTRAINT_TYPE = N'PRIMARY KEY' THEN 1 | |
+ ELSE NULL | |
+ END AS [is_primary_key] | |
FROM #{db_name_with_period}INFORMATION_SCHEMA.COLUMNS columns | |
LEFT OUTER JOIN #{db_name_with_period}INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC ON TC.TABLE_NAME = columns.TABLE_NAME AND TC.CONSTRAINT_TYPE = N'PRIMARY KEY' | |
LEFT OUTER JOIN #{db_name_with_period}INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS CCU ON TC.CONSTRAINT_NAME = CCU.CONSTRAINT_NAME AND CCU.COLUMN_NAME = columns.COLUMN_NAME | |
@@ -240,6 +243,7 @@ module ActiveRecord | |
end | |
ci[:null] = ci[:is_nullable].to_i == 1 ; ci.delete(:is_nullable) | |
ci[:is_identity] = ci[:is_identity].to_i == 1 | |
+ ci[:is_primary_key] = ci[:is_primary_key].to_i == 1 | |
ci | |
end | |
end | |
@@ -389,7 +393,7 @@ module ActiveRecord | |
end | |
def identity_column(table_name) | |
- columns(table_name).detect(&:primary) || columns(table_name).detect(&:is_identity?) | |
+ columns(table_name).detect(&:is_identity?) | |
end | |
end | |
diff --git a/lib/active_record/connection_adapters/sqlserver/version.rb b/lib/active_record/connection_adapters/sqlserver/version.rb | |
index ac48b9c..4ab2d25 100644 | |
--- a/lib/active_record/connection_adapters/sqlserver/version.rb | |
+++ b/lib/active_record/connection_adapters/sqlserver/version.rb | |
@@ -3,7 +3,7 @@ module ActiveRecord | |
module Sqlserver | |
module Version | |
- VERSION = '3.1.2'.freeze | |
+ VERSION = '3.1.2' | |
end | |
end | |
diff --git a/lib/active_record/connection_adapters/sqlserver_adapter.rb b/lib/active_record/connection_adapters/sqlserver_adapter.rb | |
index f47f78c..f9f74de 100644 | |
--- a/lib/active_record/connection_adapters/sqlserver_adapter.rb | |
+++ b/lib/active_record/connection_adapters/sqlserver_adapter.rb | |
@@ -53,7 +53,7 @@ module ActiveRecord | |
def initialize(name, default, sql_type = nil, null = true, sqlserver_options = {}) | |
@sqlserver_options = sqlserver_options.symbolize_keys | |
super(name, default, sql_type, null) | |
- @primary = @sqlserver_options[:is_identity] | |
+ @primary = @sqlserver_options[:is_primary_key] | |
end | |
class << self |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment