From 9ce02118061fda778e592be83f7c4c3c7c75bfbf Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Wed, 27 Oct 2010 14:23:01 -0700 Subject: [PATCH] speeding up query cache --- .../connection_adapters/abstract/query_cache.rb | 7 +++---- .../active_record/connection_adapters/abstract_adapter.rb | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb b/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb index cbc09dfc3b..6ec023f0e5 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb @@ -59,14 +59,13 @@ module ActiveRecord private def cache_sql(sql, binds) - key = [sql, binds] result = - if @query_cache.has_key?(key) + if @query_cache[sql].key?(binds) ActiveSupport::Notifications.instrument("sql.active_record", :sql => sql, :name => "CACHE", :connection_id => self.object_id) - @query_cache[key] + @query_cache[sql][binds] else - @query_cache[key] = yield + @query_cache[sql][binds] = yield end if Array === result diff --git a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb index 42d6f2bb21..f3fba9a3a9 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb @@ -41,7 +41,7 @@ module ActiveRecord @active = nil @connection, @logger = connection, logger @query_cache_enabled = false - @query_cache = {} + @query_cache = Hash.new { |h,sql| h[sql] = {} } @instrumenter = ActiveSupport::Notifications.instrumenter end