diff options
author | Paul Sadauskas <psadauskas@gmail.com> | 2012-01-24 14:22:24 -0700 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2012-02-08 13:34:04 +0100 |
commit | 0a75336c89a517bf2328a6e5f87319b9f2457252 (patch) | |
tree | c4af4c1c62a1cbf5ef70b3b843d9046976838024 /activerecord/test | |
parent | 77b4edce1544f105cc7764249becc1e998b88fc2 (diff) | |
download | rails-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/test')
-rw-r--r-- | activerecord/test/cases/migration_test.rb | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/activerecord/test/cases/migration_test.rb b/activerecord/test/cases/migration_test.rb index 1e68911ab3..c4ccce9126 100644 --- a/activerecord/test/cases/migration_test.rb +++ b/activerecord/test/cases/migration_test.rb @@ -161,6 +161,11 @@ if ActiveRecord::Base.connection.supports_migrations? Person.connection.remove_index("people", :name => good_index_name) end + def test_add_index_attribute_length_limit + connection.add_index :testings, [:foo, :bar], :length => {:foo => 10, :bar => nil} + assert connection.index_exists?(:testings, [:foo, :bar]) + end + def test_remove_nonexistent_index # we do this by name, so OpenBase is a wash as noted above unless current_adapter?(:OpenBaseAdapter) |