Skip to content

Commit 9d16738

Browse files
committed
Merge pull request #50410 from fatkodima/fix-async-queries-with-query-cache
Fix async queries to work with query cache
1 parent 8d1cd8b commit 9d16738

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,8 @@ def select_all(arel, name = nil, binds = [], preparable: nil, async: false)
102102
sql, binds, preparable = to_sql_and_binds(arel, binds, preparable)
103103

104104
if async
105-
lookup_sql_cache(sql, name, binds) || super(sql, name, binds, preparable: preparable, async: async)
105+
result = lookup_sql_cache(sql, name, binds) || super(sql, name, binds, preparable: preparable, async: async)
106+
FutureResult::Complete.new(result)
106107
else
107108
cache_sql(sql, name, binds) { super(sql, name, binds, preparable: preparable, async: async) }
108109
end

activerecord/test/cases/asynchronous_queries_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def test_async_query_cache
4848

4949
@connection.select_all "SELECT * FROM posts"
5050
result = @connection.select_all "SELECT * FROM posts", async: true
51-
assert_equal ActiveRecord::Result, result.class
51+
assert_equal ActiveRecord::FutureResult::Complete, result.class
5252
ensure
5353
ActiveRecord::Base.asynchronous_queries_tracker.finalize_session
5454
@connection.disable_query_cache!

activerecord/test/cases/calculations_test.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1034,6 +1034,13 @@ def test_calculation_with_polymorphic_relation
10341034
assert_equal part.id, ShipPart.joins(:trinkets).sum(:id)
10351035
end
10361036

1037+
def test_calculation_with_query_cache
1038+
ShipPart.cache do
1039+
count = ShipPart.count
1040+
assert_async_equal count, ShipPart.async_count
1041+
end
1042+
end
1043+
10371044
def test_pluck_joined_with_polymorphic_relation
10381045
part = ShipPart.create!(name: "has trinket")
10391046
part.trinkets.create!

0 commit comments

Comments
 (0)