Skip to content

Commit d5dd7c2

Browse files
committed
Revert
1 parent 37527ca commit d5dd7c2

File tree

1 file changed

+44
-42
lines changed

1 file changed

+44
-42
lines changed

lib/active_record/connection_adapters/sqlserver/schema_statements.rb

Lines changed: 44 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,15 @@ def columns(table_name)
6868
return [] if table_name.blank?
6969

7070
column_definitions(table_name).map do |ci|
71-
sqlserver_options = ci.slice(:ordinal_position, :is_primary, :is_identity, :table_name)
72-
sql_type_metadata = fetch_type_metadata(ci['type'], sqlserver_options)
71+
sqlserver_options = ci.slice :ordinal_position, :is_primary, :is_identity, :table_name
72+
sql_type_metadata = fetch_type_metadata ci[:type], sqlserver_options
7373
new_column(
74-
ci['name'],
75-
ci['default_value'],
74+
ci[:name],
75+
ci[:default_value],
7676
sql_type_metadata,
77-
ci['null'],
78-
ci['default_function'],
79-
ci['collation'],
77+
ci[:null],
78+
ci[:default_function],
79+
ci[:collation],
8080
nil,
8181
sqlserver_options
8282
)
@@ -480,16 +480,16 @@ def initialize_native_database_types
480480
end
481481

482482
def column_definitions(table_name)
483-
identifier = database_prefix_identifier(table_name)
484-
database = identifier.fully_qualified_database_quoted
483+
identifier = database_prefix_identifier(table_name)
484+
database = identifier.fully_qualified_database_quoted
485485
view_exists = view_exists?(table_name)
486-
view_table_name = view_table_name(table_name) if view_exists
486+
view_tblnm = view_table_name(table_name) if view_exists
487487

488488
if view_exists
489489
sql = <<~SQL
490490
SELECT LOWER(c.COLUMN_NAME) AS [name], c.COLUMN_DEFAULT AS [default]
491491
FROM #{database}.INFORMATION_SCHEMA.COLUMNS c
492-
WHERE c.TABLE_NAME = #{quote(view_table_name)}
492+
WHERE c.TABLE_NAME = #{quote(view_tblnm)}
493493
SQL
494494
results = internal_exec_query(sql, "SCHEMA")
495495
default_functions = results.each.with_object({}) { |row, out| out[row["name"]] = row["default"] }.compact
@@ -504,29 +504,30 @@ def column_definitions(table_name)
504504
results = internal_exec_query(sql, "SCHEMA", binds)
505505

506506
columns = results.map do |ci|
507-
ci['_type'] = ci['type']
508-
ci['table_name'] = view_table_name || table_name
509-
ci['type'] = case ci['type']
507+
ci = ci.to_h.symbolize_keys
508+
ci[:_type] = ci[:type]
509+
ci[:table_name] = view_tblnm || table_name
510+
ci[:type] = case ci[:type]
510511
when /^bit|image|text|ntext|datetime$/
511-
ci['type']
512+
ci[:type]
512513
when /^datetime2|datetimeoffset$/i
513-
"#{ci['type']}(#{ci['datetime_precision']})"
514+
"#{ci[:type]}(#{ci[:datetime_precision]})"
514515
when /^time$/i
515-
"#{ci['type']}(#{ci['datetime_precision']})"
516+
"#{ci[:type]}(#{ci[:datetime_precision]})"
516517
when /^numeric|decimal$/i
517-
"#{ci['type']}(#{ci['numeric_precision']},#{ci['numeric_scale']})"
518+
"#{ci[:type]}(#{ci[:numeric_precision]},#{ci[:numeric_scale]})"
518519
when /^float|real$/i
519-
"#{ci['type']}"
520+
"#{ci[:type]}"
520521
when /^char|nchar|varchar|nvarchar|binary|varbinary|bigint|int|smallint$/
521-
ci['length'].to_i == -1 ? "#{ci['type']}(max)" : "#{ci['type']}(#{ci['length']})"
522+
ci[:length].to_i == -1 ? "#{ci[:type]}(max)" : "#{ci[:type]}(#{ci[:length]})"
522523
else
523-
ci['type']
524+
ci[:type]
524525
end
525-
ci['default_value'],
526-
ci['default_function'] = begin
527-
default = ci['default_value']
526+
ci[:default_value],
527+
ci[:default_function] = begin
528+
default = ci[:default_value]
528529
if default.nil? && view_exists
529-
view_column = views_real_column_name(table_name, ci['name']).downcase
530+
view_column = views_real_column_name(table_name, ci[:name]).downcase
530531
default = default_functions[view_column] if view_column.present?
531532
end
532533
case default
@@ -541,19 +542,19 @@ def column_definitions(table_name)
541542
when /CREATE DEFAULT/mi
542543
[nil, nil]
543544
else
544-
type = case ci['type']
545-
when /smallint|int|bigint/ then ci['_type']
546-
else ci['type']
545+
type = case ci[:type]
546+
when /smallint|int|bigint/ then ci[:_type]
547+
else ci[:type]
547548
end
548549
value = default.match(/\A\((.*)\)\Z/m)[1]
549550
value = select_value("SELECT CAST(#{value} AS #{type}) AS value", "SCHEMA")
550551
[value, nil]
551552
end
552553
end
553-
ci['null'] = ci['is_nullable'].to_i == 1
554+
ci[:null] = ci[:is_nullable].to_i == 1
554555
ci.delete(:is_nullable)
555-
ci['is_primary'] = ci['is_primary'].to_i == 1
556-
ci['is_identity'] = ci['is_identity'].to_i == 1 unless [TrueClass, FalseClass].include?(ci['is_identity'].class)
556+
ci[:is_primary] = ci[:is_primary].to_i == 1
557+
ci[:is_identity] = ci[:is_identity].to_i == 1 unless [TrueClass, FalseClass].include?(ci[:is_identity].class)
557558
ci
558559
end
559560

@@ -705,20 +706,21 @@ def view_table_name(table_name)
705706

706707
def view_information(table_name)
707708
@view_information ||= {}
708-
709709
@view_information[table_name] ||= begin
710710
identifier = SQLServer::Utils.extract_identifiers(table_name)
711711
information_query_table = identifier.database.present? ? "[#{identifier.database}].[INFORMATION_SCHEMA].[VIEWS]" : "[INFORMATION_SCHEMA].[VIEWS]"
712-
713-
view_info = select_one("SELECT * FROM #{information_query_table} WITH (NOLOCK) WHERE TABLE_NAME = #{quote(identifier.object)}", "SCHEMA")
714-
715-
if view_info && view_info['VIEW_DEFINITION'].blank? || view_info['VIEW_DEFINITION'].length == 4000
716-
view_info['VIEW_DEFINITION'] = begin
717-
select_values("EXEC sp_helptext #{identifier.object_quoted}", "SCHEMA").join
718-
rescue
719-
warn "No view definition found, possible permissions problem.\nPlease run GRANT VIEW DEFINITION TO your_user;"
720-
nil
721-
end
712+
view_info = select_one "SELECT * FROM #{information_query_table} WITH (NOLOCK) WHERE TABLE_NAME = #{quote(identifier.object)}", "SCHEMA"
713+
714+
if view_info
715+
view_info = view_info.to_h.with_indifferent_access
716+
if view_info[:VIEW_DEFINITION].blank? || view_info[:VIEW_DEFINITION].length == 4000
717+
view_info[:VIEW_DEFINITION] = begin
718+
select_values("EXEC sp_helptext #{identifier.object_quoted}", "SCHEMA").join
719+
rescue
720+
warn "No view definition found, possible permissions problem.\nPlease run GRANT VIEW DEFINITION TO your_user;"
721+
nil
722+
end
723+
end
722724
end
723725

724726
view_info

0 commit comments

Comments
 (0)