Module: MysqlOnlineMigrations::Indexes
- Included in:
- MysqlOnlineMigrations
- Defined in:
- lib/mysql_online_migrations/indexes.rb
Instance Method Summary collapse
- #add_index(table_name, column_name, options = {}) ⇒ Object
- #remove_index(table_name, options_index_name, options = {}) ⇒ Object
- #rename_index(table_name, old_name, new_name, options = {}) ⇒ Object
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, = {}) lock, = () index_name, index_type, index_columns = (table_name, column_name, ) 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, , = {}) lock, = () execute "DROP INDEX #{quote_column_name(index_name_for_remove(table_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, = {}) old_index_def = indexes(table_name).detect { |i| i.name == old_name } return unless old_index_def remove_index(table_name, { :name => old_name }, ) add_index(table_name, old_index_def.columns, .merge(name: new_name, unique: old_index_def.unique)) end |