aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorAndrew White <pixeltrix@users.noreply.github.com>2015-09-20 20:45:30 +0100
committerAndrew White <pixeltrix@users.noreply.github.com>2015-09-20 20:45:30 +0100
commit99c8c8df1a7cfe452177d33cd4ca9a0ee4a05cf4 (patch)
tree273fed4f67ef0dce107f243966a920fe9753caff /activerecord/lib
parent64766e82d6b80e89eea98dfb4798ac0e40d88a59 (diff)
parente29f02e1bd4d424f7b0294958251aa49e88d688e (diff)
downloadrails-99c8c8df1a7cfe452177d33cd4ca9a0ee4a05cf4.tar.gz
rails-99c8c8df1a7cfe452177d33cd4ca9a0ee4a05cf4.tar.bz2
rails-99c8c8df1a7cfe452177d33cd4ca9a0ee4a05cf4.zip
Merge pull request #21687 from kamipo/refactor_table_exists
Refactor `table_exists?` in AbstractMysqlAdapter
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb27
1 files changed, 9 insertions, 18 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 97f54dc0b0..feb41e96f0 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
@@ -625,33 +625,24 @@ module ActiveRecord
show_variable 'collation_database'
end
- def tables(name = nil, database = nil, like = nil) #:nodoc:
- sql = "SHOW TABLES "
- sql << "IN #{quote_table_name(database)} " if database
- sql << "LIKE #{quote(like)}" if like
-
- execute_and_free(sql, 'SCHEMA') do |result|
- result.collect(&:first)
- end
+ def tables(name = nil) # :nodoc:
+ select_values("SHOW FULL TABLES", 'SCHEMA')
end
def truncate(table_name, name = nil)
execute "TRUNCATE TABLE #{quote_table_name(table_name)}", name
end
- def table_exists?(name)
- return false unless name.present?
- return true if tables(nil, nil, name).any?
+ def table_exists?(table_name)
+ return false unless table_name.present?
- name = name.to_s
- schema, table = name.split('.', 2)
+ schema, name = table_name.to_s.split('.', 2)
+ schema, name = @config[:database], schema unless name # A table was provided without a schema
- unless table # A table was provided without a schema
- table = schema
- schema = nil
- end
+ sql = "SELECT table_name FROM information_schema.tables "
+ sql << "WHERE table_schema = #{quote(schema)} AND table_name = #{quote(name)}"
- tables(nil, schema, table).any?
+ select_values(sql, 'SCHEMA').any?
end
def views # :nodoc: