Skip to content

Commit fc41976

Browse files
committed
Rename column and associated index gets renamed too.
1 parent f452a02 commit fc41976

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

lib/active_record/connection_adapters/sqlserver/schema_statements.rb

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ def change_column(table_name, column_name, type, options = {})
7070
end
7171
sql_commands.each { |c| do_execute(c) }
7272
end
73-
7473
def change_column_default(table_name, column_name, default)
7574
remove_default_constraint(table_name, column_name)
7675
do_execute "ALTER TABLE #{quote_table_name(table_name)} ADD CONSTRAINT #{default_constraint_name(table_name, column_name)} DEFAULT #{quote(default)} FOR #{quote_column_name(column_name)}"
@@ -80,6 +79,11 @@ def rename_column(table_name, column_name, new_column_name)
8079
schema_cache.clear_table_cache!(table_name)
8180
detect_column_for! table_name, column_name
8281
do_execute "EXEC sp_rename '#{table_name}.#{column_name}', '#{new_column_name}', 'COLUMN'"
82+
rename_column_indexes(table_name, column_name, new_column_name)
83+
end
84+
85+
def rename_index(table_name, old_name, new_name)
86+
execute "EXEC sp_rename N'#{table_name}.#{old_name}', N'#{new_name}', N'INDEX'"
8387
end
8488

8589
def remove_index!(table_name, index_name)
@@ -326,8 +330,8 @@ def views_real_column_name(table_name,column_name)
326330
# === SQLServer Specific (Identity Inserts) ===================== #
327331

328332
def query_requires_identity_insert?(sql)
329-
330-
if insert_sql?(sql)
333+
334+
if insert_sql?(sql)
331335
table_name = get_table_name(sql)
332336
id_column = identity_column(table_name)
333337
id_column && sql =~ /^\s*(INSERT|EXEC sp_executesql N'INSERT)[^(]+\([^)]*\b(#{id_column.name})\b,?[^)]*\)/i ? quote_table_name(table_name) : false
@@ -354,7 +358,7 @@ def set_identity_insert(table_name, enable = true)
354358
rescue Exception => e
355359
raise ActiveRecordError, "IDENTITY_INSERT could not be turned #{enable ? 'ON' : 'OFF'} for table #{table_name}"
356360
end
357-
361+
358362
def identity_column(table_name)
359363
schema_cache.columns(table_name).detect(&:is_identity?)
360364
end

0 commit comments

Comments
 (0)