aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
diff options
context:
space:
mode:
authorJeff Browning <jeff@jkbrowning.com>2014-06-27 10:04:18 -0400
committerRafael Mendonça França <rafaelmfranca@gmail.com>2014-07-15 12:41:14 -0300
commit11338183265f759b07c8dffd526b92fb550ba79d (patch)
treea36920e0a291383730e4a154342de9a61619b526 /activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
parent473b09f6160a4663ded59d529d47be219eb18d9a (diff)
downloadrails-11338183265f759b07c8dffd526b92fb550ba79d.tar.gz
rails-11338183265f759b07c8dffd526b92fb550ba79d.tar.bz2
rails-11338183265f759b07c8dffd526b92fb550ba79d.zip
Fix version detection for RENAME INDEX support. Fixes #15931.
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.rb14
1 files changed, 13 insertions, 1 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 ccb957d2c8..db8c16914e 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
@@ -473,7 +473,7 @@ module ActiveRecord
end
def rename_index(table_name, old_name, new_name)
- if (version[0] == 5 && version[1] >= 7) || version[0] >= 6
+ if supports_rename_index?
execute "ALTER TABLE #{quote_table_name(table_name)} RENAME INDEX #{quote_table_name(old_name)} TO #{quote_table_name(new_name)}"
else
super
@@ -774,10 +774,22 @@ module ActiveRecord
private
+ def version
+ @version ||= full_version.scan(/^(\d+)\.(\d+)\.(\d+)/).flatten.map { |v| v.to_i }
+ end
+
+ def mariadb?
+ !!(full_version =~ /mariadb/i)
+ end
+
def supports_views?
version[0] >= 5
end
+ def supports_rename_index?
+ mariadb? ? false : (version[0] == 5 && version[1] >= 7) || version[0] >= 6
+ end
+
def configure_connection
variables = @config.fetch(:variables, {}).stringify_keys