aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
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/test
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/test')
-rw-r--r--activerecord/test/cases/migration_test.rb5
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)