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 cbc09dfc3b3d2d93503ff6f723c709562a8d0c7d..6ec023f0e5aecaa4897188b87b9fa55ac3fedcce 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 @@ def select_all(sql, name = nil, binds = []) 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 42d6f2bb21937e45930d2d5438572a9ec2754d7d..f3fba9a3a96d9f05858fdfdd08f4e8d756c2939c 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 @@ def initialize(connection, logger = nil) #:nodoc: @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