From e38dbb13b7c931312ff00e6f8e34845f72fe4e0f Mon Sep 17 00:00:00 2001 From: Arun Kumar Date: Sun, 29 Nov 2009 14:02:54 +0530 Subject: [PATCH] Make MysqlAdapter.table_exists? to respect the mysql configuation lower_case_table_names --- .../connection_adapters/mysql_adapter.rb | 10 ++++++++++ activerecord/test/cases/adapter_test.rb | 8 ++++++++ 2 files changed, 18 insertions(+), 0 deletions(-) diff --git a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb index ad36ff2..0873d06 100644 --- a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb @@ -462,6 +462,16 @@ module ActiveRecord columns end + def table_exists?(table_name) + if show_variable('lower_case_table_names') == '1' + lower_case_table_name = table_name.to_s.downcase + tables.collect(&:downcase).include?(lower_case_table_name) + else + tables.include?(table_name.to_s) + end + end + + def create_table(table_name, options = {}) #:nodoc: super(table_name, options.reverse_merge(:options => "ENGINE=InnoDB")) end diff --git a/activerecord/test/cases/adapter_test.rb b/activerecord/test/cases/adapter_test.rb index c59be26..af4ced1 100644 --- a/activerecord/test/cases/adapter_test.rb +++ b/activerecord/test/cases/adapter_test.rb @@ -60,6 +60,14 @@ class AdapterTest < ActiveRecord::TestCase assert_equal @connection.show_variable('collation_database'), @connection.collation end + def test_table_exists_should_respect_lower_case_table_names + @connection.expects(:show_variable).with('lower_case_table_names').returns(nil) + assert !@connection.table_exists?("Accounts") + + @connection.expects(:show_variable).with('lower_case_table_names').returns('1') + assert @connection.table_exists?("Accounts") + end + def test_show_nonexistent_variable_returns_nil assert_nil @connection.show_variable('foo_bar_baz') end -- 1.6.0.4