aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases
diff options
context:
space:
mode:
authorFlorian Weingarten <flo@hackvalue.de>2014-11-27 19:45:02 +0000
committerFlorian Weingarten <flo@hackvalue.de>2014-12-01 15:45:50 +0000
commitc753ede62c0e554c26ddc5bf31137f86096bedb7 (patch)
tree7c6bdf70557617f05c7faa88a40ddcac28546989 /activerecord/test/cases
parent5ac824ecb7bf20f332cbb1c50ab7d9185c124f8c (diff)
downloadrails-c753ede62c0e554c26ddc5bf31137f86096bedb7.tar.gz
rails-c753ede62c0e554c26ddc5bf31137f86096bedb7.tar.bz2
rails-c753ede62c0e554c26ddc5bf31137f86096bedb7.zip
Restore query cache on rollback
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r--activerecord/test/cases/query_cache_test.rb32
1 files changed, 32 insertions, 0 deletions
diff --git a/activerecord/test/cases/query_cache_test.rb b/activerecord/test/cases/query_cache_test.rb
index 9d89d6a1e8..744f9edc47 100644
--- a/activerecord/test/cases/query_cache_test.rb
+++ b/activerecord/test/cases/query_cache_test.rb
@@ -212,6 +212,38 @@ class QueryCacheTest < ActiveRecord::TestCase
ensure
ActiveRecord::Base.configurations = conf
end
+
+ def test_query_cache_doesnt_leak_cached_results_of_rolled_back_queries
+ ActiveRecord::Base.connection.enable_query_cache!
+ post = Post.first
+
+ Post.transaction do
+ post.update_attributes(title: 'rollback')
+ assert_equal 1, Post.where(title: 'rollback').to_a.count
+ raise ActiveRecord::Rollback
+ end
+
+ assert_equal 0, Post.where(title: 'rollback').to_a.count
+
+ ActiveRecord::Base.connection.uncached do
+ assert_equal 0, Post.where(title: 'rollback').to_a.count
+ end
+
+ begin
+ Post.transaction do
+ post.update_attributes(title: 'rollback')
+ assert_equal 1, Post.where(title: 'rollback').to_a.count
+ raise 'broken'
+ end
+ rescue Exception
+ end
+
+ assert_equal 0, Post.where(title: 'rollback').to_a.count
+
+ ActiveRecord::Base.connection.uncached do
+ assert_equal 0, Post.where(title: 'rollback').to_a.count
+ end
+ end
end
class QueryCacheExpiryTest < ActiveRecord::TestCase