From 1a15fda02159487371a0cb4c36311345dec7b46b Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Thu, 3 Feb 2011 11:12:07 -0800 Subject: reduce cache misses on STI subclasses --- activerecord/lib/active_record/base.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'activerecord/lib/active_record') diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb index e4a425627f..8750e226b9 100644 --- a/activerecord/lib/active_record/base.rb +++ b/activerecord/lib/active_record/base.rb @@ -747,12 +747,13 @@ module ActiveRecord #:nodoc: undefine_attribute_methods reset_column_cache @column_names = @content_columns = @dynamic_methods_hash = @inheritance_column = nil - @arel_engine = @relation = @arel_table = nil + @arel_engine = @relation = nil end def reset_column_cache # :nodoc: @@columns.delete table_name @@columns_hash.delete table_name + @@arel_tables.delete table_name end def attribute_method?(attribute) @@ -851,7 +852,7 @@ module ActiveRecord #:nodoc: end def arel_table - @arel_table ||= Arel::Table.new(table_name, arel_engine) + @@arel_tables[table_name] ||= Arel::Table.new(table_name, arel_engine) end def arel_engine @@ -1401,6 +1402,7 @@ MSG end @@columns_hash = {} @@columns = {} + @@arel_tables = {} public # New objects can be instantiated as either empty (pass no construction parameter) or pre-set with -- cgit v1.2.3