Skip to content

Commit b9e786b

Browse files
committed
Qualify INFORMATION_SCHEMA.COLUMNS with a correct period DB name if present.
1 parent da13293 commit b9e786b

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

CHANGELOG

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11

22
MASTER
33

4+
* Qualify INFORMATION_SCHEMA.COLUMNS with a correct period DB name if present.
5+
46
* Allow adapter to return multipe results sets, for example from stored procedures. [Chris Hall]
57

68

lib/active_record/connection_adapters/sqlserver_adapter.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1047,6 +1047,7 @@ def initialize_sqlserver_caches(reset_columns=true)
10471047

10481048
def column_definitions(table_name)
10491049
db_name = unqualify_db_name(table_name)
1050+
db_name_with_period = "#{db_name}." if db_name
10501051
table_name = unqualify_table_name(table_name)
10511052
sql = %{
10521053
SELECT
@@ -1068,7 +1069,7 @@ def column_definitions(table_name)
10681069
WHEN COLUMNPROPERTY(OBJECT_ID(columns.TABLE_SCHEMA+'.'+columns.TABLE_NAME), columns.COLUMN_NAME, 'IsIdentity') = 0 THEN NULL
10691070
ELSE 1
10701071
END as is_identity
1071-
FROM #{db_name}INFORMATION_SCHEMA.COLUMNS columns
1072+
FROM #{db_name_with_period}INFORMATION_SCHEMA.COLUMNS columns
10721073
WHERE columns.TABLE_NAME = '#{table_name}'
10731074
ORDER BY columns.ordinal_position
10741075
}.gsub(/[ \t\r\n]+/,' ')
@@ -1088,7 +1089,7 @@ def column_definitions(table_name)
10881089
if ci[:default_value].nil? && views.include?(table_name)
10891090
real_table_name = table_name_or_views_table_name(table_name)
10901091
real_column_name = views_real_column_name(table_name,ci[:name])
1091-
col_default_sql = "SELECT c.COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS c WHERE c.TABLE_NAME = '#{real_table_name}' AND c.COLUMN_NAME = '#{real_column_name}'"
1092+
col_default_sql = "SELECT c.COLUMN_DEFAULT FROM #{db_name_with_period}INFORMATION_SCHEMA.COLUMNS c WHERE c.TABLE_NAME = '#{real_table_name}' AND c.COLUMN_NAME = '#{real_column_name}'"
10921093
ci[:default_value] = info_schema_query { select_value(col_default_sql) }
10931094
end
10941095
ci[:default_value] = case ci[:default_value]

0 commit comments

Comments
 (0)