diff options
author | Andrew White <pixeltrix@users.noreply.github.com> | 2015-09-20 20:45:30 +0100 |
---|---|---|
committer | Andrew White <pixeltrix@users.noreply.github.com> | 2015-09-20 20:45:30 +0100 |
commit | 99c8c8df1a7cfe452177d33cd4ca9a0ee4a05cf4 (patch) | |
tree | 273fed4f67ef0dce107f243966a920fe9753caff /activerecord/lib/active_record | |
parent | 64766e82d6b80e89eea98dfb4798ac0e40d88a59 (diff) | |
parent | e29f02e1bd4d424f7b0294958251aa49e88d688e (diff) | |
download | rails-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/active_record')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb | 27 |
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: |