aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorPaul Sadauskas <psadauskas@gmail.com>2012-01-24 14:22:24 -0700
committerJosé Valim <jose.valim@gmail.com>2012-02-08 13:34:04 +0100
commit0a75336c89a517bf2328a6e5f87319b9f2457252 (patch)
treec4af4c1c62a1cbf5ef70b3b843d9046976838024 /activerecord/lib
parent77b4edce1544f105cc7764249becc1e998b88fc2 (diff)
downloadrails-0a75336c89a517bf2328a6e5f87319b9f2457252.tar.gz
rails-0a75336c89a517bf2328a6e5f87319b9f2457252.tar.bz2
rails-0a75336c89a517bf2328a6e5f87319b9f2457252.zip
Handle nil in add_index :length option in MySQL
Our schema.rb is being generated with an `add_index` line similar to this: add_index "foo", ["foo", "bar"], :name => "xxx", :length => {"foo"=>8, "bar=>nil} This is the same as it was on Rails 3.1.3, however, now when that schema.rb is evaluated, its generating bad SQL in MySQL: Mysql::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))' at line 1: CREATE UNIQUE INDEX `xxx` ON `foo` (`foo`(8), `bar`()) This commit adds a check for nil on the length attribute to prevent the empty parens from being output. Conflicts: activerecord/test/cases/migration/index_test.rb Signed-off-by: José Valim <jose.valim@gmail.com>
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb2
1 files changed, 1 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 0cc5ee2958..9d9dbcc355 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
@@ -541,7 +541,7 @@ module ActiveRecord
if options.is_a?(Hash) && length = options[:length]
case length
when Hash
- column_names.each {|name| option_strings[name] += "(#{length[name]})" if length.has_key?(name)}
+ column_names.each {|name| option_strings[name] += "(#{length[name]})" if length.has_key?(name) && length[name].present?}
when Fixnum
column_names.each {|name| option_strings[name] += "(#{length})"}
end