diff options
author | Dan McClain <git@danmcclain.net> | 2013-03-25 13:33:37 -0400 |
---|---|---|
committer | Dan McClain <git@danmcclain.net> | 2013-03-25 17:56:38 -0400 |
commit | e199dc1a570d4f0d9a07628268835bce5aab2732 (patch) | |
tree | 693717ae53d7043907f7c7ae9a0bc13ac14d7831 /activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb | |
parent | 1a838ccda4a31bb023985f6c977e6bc3e238cda9 (diff) | |
download | rails-e199dc1a570d4f0d9a07628268835bce5aab2732.tar.gz rails-e199dc1a570d4f0d9a07628268835bce5aab2732.tar.bz2 rails-e199dc1a570d4f0d9a07628268835bce5aab2732.zip |
Adds support for concurrent indexing in PostgreSQL adapter
Adds support for algorithm option in MySQL indexes
Moves USING and algorithm options upstream
The syntax is still specific to the Adapter, so the actual executed string happens
in the corresponding adapter
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb index 71f5c8fd29..ff3e9acfac 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb @@ -208,6 +208,10 @@ module ActiveRecord NATIVE_DATABASE_TYPES end + def index_algorithms + { default: 'ALGORITHM = DEFAULT', copy: 'ALGORITHM = COPY', inplace: 'ALGORITHM = INPLACE' } + end + # HELPER METHODS =========================================== # The two drivers have slightly different ways of yielding hashes of results, so @@ -506,12 +510,8 @@ module ActiveRecord end def add_index(table_name, column_name, options = {}) #:nodoc: - if options.is_a?(Hash) && options[:using] - index_name, index_type, index_columns, index_options = add_index_options(table_name, column_name, options) - execute "CREATE #{index_type} INDEX #{quote_column_name(index_name)} USING #{options[:using]} ON #{quote_table_name(table_name)} (#{index_columns})#{index_options}" - else - super - end + index_name, index_type, index_columns, index_options, index_algorithm, index_using = add_index_options(table_name, column_name, options) + execute "CREATE #{index_type} INDEX #{quote_column_name(index_name)} #{index_using} ON #{quote_table_name(table_name)} (#{index_columns})#{index_options} #{index_algorithm}" end # Maps logical Rails types to MySQL-specific data types. |