aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorJeremy Daer <jeremydaer@gmail.com>2015-09-19 15:50:33 -0700
committerJeremy Daer <jeremydaer@gmail.com>2015-09-19 15:50:33 -0700
commitfc7311d4f1f75a1a002e43e09cbed16d9d6e7caf (patch)
tree0018f86ff8911edd8418d032a1b5587ea9611ad8 /activerecord
parentb8dee6c3ce14d7a49813a87ab115309f8c0d5daa (diff)
parentb8bedfa2f26c1697dd48dca6201a591c42ccfba0 (diff)
downloadrails-fc7311d4f1f75a1a002e43e09cbed16d9d6e7caf.tar.gz
rails-fc7311d4f1f75a1a002e43e09cbed16d9d6e7caf.tar.bz2
rails-fc7311d4f1f75a1a002e43e09cbed16d9d6e7caf.zip
Merge pull request #21664 from kamipo/reduce_call_create_table_info
Reduce the calling `create_table_info` query
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb9
1 files changed, 7 insertions, 2 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 bc350a0ceb..74f03f62d0 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
@@ -686,7 +686,7 @@ module ActiveRecord
AND fk.table_name = '#{table_name}'
SQL
- create_table_info = select_one("SHOW CREATE TABLE #{quote_table_name(table_name)}")["Create Table"]
+ create_table_info = create_table_info(table_name)
fk_info.map do |row|
options = {
@@ -703,7 +703,7 @@ module ActiveRecord
end
def table_options(table_name)
- create_table_info = select_one("SHOW CREATE TABLE #{quote_table_name(table_name)}")["Create Table"]
+ create_table_info = create_table_info(table_name)
# strip create_definitions and partition_options
raw_table_options = create_table_info.sub(/\A.*\n\) /m, '').sub(/\n\/\*!.*\*\/\n\z/m, '').strip
@@ -1023,6 +1023,11 @@ module ActiveRecord
end
end
+ def create_table_info(table_name) # :nodoc:
+ @create_table_info_cache = {}
+ @create_table_info_cache[table_name] ||= select_one("SHOW CREATE TABLE #{quote_table_name(table_name)}")["Create Table"]
+ end
+
def create_table_definition(name, temporary = false, options = nil, as = nil) # :nodoc:
TableDefinition.new(native_database_types, name, temporary, options, as)
end