diff options
author | Piotr Sarnacki <drogus@gmail.com> | 2012-03-04 08:33:21 -0800 |
---|---|---|
committer | Piotr Sarnacki <drogus@gmail.com> | 2012-03-04 08:33:21 -0800 |
commit | 44e79673ae8d9ef63a2630fb97711c4d2e2126ee (patch) | |
tree | b437b410e81cef4cc07a045af528faf8a228e89d | |
parent | 223549f420583e8cfaa280542da679d6c6045b44 (diff) | |
parent | 69c7f024882f8150a2bda8536e1480d19c982e04 (diff) | |
download | rails-44e79673ae8d9ef63a2630fb97711c4d2e2126ee.tar.gz rails-44e79673ae8d9ef63a2630fb97711c4d2e2126ee.tar.bz2 rails-44e79673ae8d9ef63a2630fb97711c4d2e2126ee.zip |
Merge pull request #5270 from kennyj/fix_3163
Fix GH #3163. Should quote database on mysql/mysql2.
3 files changed, 22 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 e33903622b..731c07547a 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb @@ -375,7 +375,7 @@ module ActiveRecord def tables(name = nil, database = nil, like = nil) #:nodoc: sql = "SHOW TABLES " - sql << "IN #{database} " if database + sql << "IN #{quote_table_name(database)} " if database sql << "LIKE #{quote(like)}" if like execute_and_free(sql, 'SCHEMA') do |result| diff --git a/activerecord/test/cases/adapters/mysql/mysql_adapter_test.rb b/activerecord/test/cases/adapters/mysql/mysql_adapter_test.rb index 7fe2c02c04..073d0b0e73 100644 --- a/activerecord/test/cases/adapters/mysql/mysql_adapter_test.rb +++ b/activerecord/test/cases/adapters/mysql/mysql_adapter_test.rb @@ -46,6 +46,16 @@ module ActiveRecord assert_equal str, value end + def test_tables_quoting + begin + @conn.tables(nil, "foo-bar", nil) + flunk + rescue => e + # assertion for *quoted* database properly + assert_match(/Access denied for user/, e.inspect) + end + end + private def insert(ctx, data) binds = data.map { |name, value| diff --git a/activerecord/test/cases/adapters/mysql2/schema_test.rb b/activerecord/test/cases/adapters/mysql2/schema_test.rb index d5676bc522..fd9996c937 100644 --- a/activerecord/test/cases/adapters/mysql2/schema_test.rb +++ b/activerecord/test/cases/adapters/mysql2/schema_test.rb @@ -35,6 +35,17 @@ module ActiveRecord def test_table_exists_wrong_schema assert(!@connection.table_exists?("#{@db_name}.zomg"), "table should not exist") end + + def test_tables_quoting + begin + @connection.tables(nil, "foo-bar", nil) + flunk + rescue => e + # assertion for *quoted* database properly + assert_match(/Access denied for user/, e.inspect) + end + end + end end end |