From 6036d1d6ec4744c0b29640963666b68cee732c32 Mon Sep 17 00:00:00 2001 From: Jordan Brough Date: Fri, 10 Jul 2009 08:16:28 -0600 Subject: [PATCH] MySQL optimization: drop multiple columns at once. --- .../connection_adapters/mysql_adapter.rb | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb index 1072eb7..78c5ecc 100644 --- a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb @@ -481,6 +481,13 @@ module ActiveRecord execute "RENAME TABLE #{quote_table_name(table_name)} TO #{quote_table_name(new_name)}" end + # allow MySQL to drop multiple columns in a single query + def remove_column(table_name, *column_names) #:nodoc: + column_drops = column_names.map{|c| "DROP COLUMN #{quote_column_name(c)}"}.join(", ") + execute "ALTER TABLE #{quote_table_name(table_name)} #{column_drops}" + end + alias :remove_columns :remove_column + def change_column_default(table_name, column_name, default) #:nodoc: column = column_for(table_name, column_name) change_column table_name, column_name, column.sql_type, :default => default -- 1.6.1.2