Module: MysqlOnlineMigrations::Indexes

Included in:
MysqlOnlineMigrations
Defined in:
lib/mysql_online_migrations/indexes.rb

Instance Method Summary collapse

Instance Method Details

#add_index(table_name, column_name, options = {}) ⇒ Object



3
4
5
6
7
# File 'lib/mysql_online_migrations/indexes.rb', line 3

def add_index(table_name, column_name, options = {})
  lock, options = extract_lock_from_options(options)
  index_name, index_type, index_columns = add_index_options(table_name, column_name, options)
  execute "CREATE #{index_type} INDEX #{quote_column_name(index_name)} ON #{quote_table_name(table_name)} (#{index_columns}) #{lock_statement(lock)}"
end

#remove_index(table_name, options_index_name, options = {}) ⇒ Object



9
10
11
12
# File 'lib/mysql_online_migrations/indexes.rb', line 9

def remove_index(table_name, options_index_name, options = {})
  lock, options = extract_lock_from_options(options)
  execute "DROP INDEX #{quote_column_name(index_name_for_remove(table_name, options_index_name))} ON #{quote_table_name(table_name)} #{lock_statement(lock)}"
end

#rename_index(table_name, old_name, new_name, options = {}) ⇒ Object



14
15
16
17
18
19
# File 'lib/mysql_online_migrations/indexes.rb', line 14

def rename_index(table_name, old_name, new_name, options = {})
  old_index_def = indexes(table_name).detect { |i| i.name == old_name }
  return unless old_index_def
  remove_index(table_name, { :name => old_name }, options)
  add_index(table_name, old_index_def.columns, options.merge(name: new_name, unique: old_index_def.unique))
end