mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Merge pull request #6985 from sidonath/disable-query-cache-for-locks
Disable query cache for lock queries Conflicts: activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb
This commit is contained in:
@@ -56,7 +56,7 @@ module ActiveRecord
|
||||
end
|
||||
|
||||
def select_all(arel, name = nil, binds = [])
|
||||
if @query_cache_enabled
|
||||
if @query_cache_enabled && !locked?(arel)
|
||||
sql = to_sql(arel, binds)
|
||||
cache_sql(sql, binds) { super(sql, name, binds) }
|
||||
else
|
||||
@@ -77,6 +77,14 @@ module ActiveRecord
|
||||
|
||||
result.collect { |row| row.dup }
|
||||
end
|
||||
|
||||
def locked?(arel)
|
||||
if arel.respond_to?(:locked)
|
||||
arel.locked
|
||||
else
|
||||
false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -165,6 +165,14 @@ class QueryCacheTest < ActiveRecord::TestCase
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_cache_is_ignored_for_locked_relations
|
||||
task = Task.find 1
|
||||
|
||||
Task.cache do
|
||||
assert_queries(2) { task.lock!; task.lock! }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class QueryCacheExpiryTest < ActiveRecord::TestCase
|
||||
|
||||
Reference in New Issue
Block a user