diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2015-09-11 22:29:28 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2015-09-18 23:12:36 +0900 |
commit | b8bedfa2f26c1697dd48dca6201a591c42ccfba0 (patch) | |
tree | ff2b634565d0c1a3d71cc3e8802e2222d5244d0d /activerecord/lib | |
parent | bbf0d35bf6148752911c1da4b7449450faea8755 (diff) | |
download | rails-b8bedfa2f26c1697dd48dca6201a591c42ccfba0.tar.gz rails-b8bedfa2f26c1697dd48dca6201a591c42ccfba0.tar.bz2 rails-b8bedfa2f26c1697dd48dca6201a591c42ccfba0.zip |
Reduce the calling `create_table_info` query
Currently in schema dumping, `create_table_info` query is called twice
for each tables. It means if 100 tables exists, the query is called 200
times. This change is that the query is called once for each tables in
schema dumping.
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb | 9 |
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 7b47539596..fbfc09e801 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb @@ -685,7 +685,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 = { @@ -702,7 +702,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 @@ -1018,6 +1018,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 |