From 7842caed942d5a410dcc0c22f2d3dfd808fa0cfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20L=C3=BCtke?= Date: Wed, 21 Feb 2007 21:54:41 +0000 Subject: [PATCH] Fixed query cache when multiple database connections were involved git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6195 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- activerecord/lib/active_record/query_cache.rb | 4 ++-- activerecord/test/query_cache_test.rb | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/activerecord/lib/active_record/query_cache.rb b/activerecord/lib/active_record/query_cache.rb index e5f3d7825cc61..e29c86d9359e1 100644 --- a/activerecord/lib/active_record/query_cache.rb +++ b/activerecord/lib/active_record/query_cache.rb @@ -73,13 +73,13 @@ class << self alias_method :connection_without_query_cache, :connection def query_caches - (Thread.current[:query_cache] ||= {}) + Thread.current["query_cache_#{connection_without_query_cache.object_id}"] ||= {} end def query_cache if query_caches[self] query_caches[self] - elsif superclass.respond_to?(:query_cache) + elsif superclass.respond_to?(:query_cache) and superclass.respond_to?(:connection) and superclass.connection_without_query_cache == connection_without_query_cache superclass.query_cache end end diff --git a/activerecord/test/query_cache_test.rb b/activerecord/test/query_cache_test.rb index 1ede03e70ea8d..4cadc3231685f 100644 --- a/activerecord/test/query_cache_test.rb +++ b/activerecord/test/query_cache_test.rb @@ -2,6 +2,7 @@ require 'fixtures/topic' require 'fixtures/reply' require 'fixtures/task' +require 'fixtures/course' class QueryCacheTest < Test::Unit::TestCase fixtures :tasks @@ -43,6 +44,16 @@ def test_cache_is_scoped_on_all_descending_classes end end + def test_cache_does_not_blow_up_other_connections + assert_not_equal Course.connection.object_id, Task.connection.object_id, + "Connections should be different, Course connects to a different database" + + ActiveRecord::Base.cache do + assert_not_equal Course.connection.object_id, Task.connection.object_id, + "Connections should be different, Course connects to a different database" + end + end + end