Skip to content

Commit 0db535f

Browse files
authored
Merge pull request rails#52402 from jhawthorn/avoid_extra_pings
Use raw connection for Trilogy more_results
2 parents cdaa1a3 + 4ff28e8 commit 0db535f

File tree

2 files changed

+8
-19
lines changed

2 files changed

+8
-19
lines changed

activerecord/lib/active_record/connection_adapters/mysql2/database_statements.rb

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,11 @@ module Mysql2
66
module DatabaseStatements
77
# Returns an ActiveRecord::Result instance.
88
def select_all(*, **) # :nodoc:
9-
result = nil
10-
with_raw_connection do |conn|
11-
result = if ExplainRegistry.collect? && prepared_statements
12-
unprepared_statement { super }
13-
else
14-
super
15-
end
16-
conn.abandon_results!
9+
if ExplainRegistry.collect? && prepared_statements
10+
unprepared_statement { super }
11+
else
12+
super
1713
end
18-
result
1914
end
2015

2116
def internal_exec_query(sql, name = "SQL", binds = [], prepare: false, async: false, allow_retry: false) # :nodoc:
@@ -60,7 +55,6 @@ def execute_batch(statements, name = nil)
6055
combine_multi_statements(statements).each do |statement|
6156
with_raw_connection do |conn|
6257
raw_execute(statement, name)
63-
conn.abandon_results!
6458
end
6559
end
6660
end
@@ -102,6 +96,7 @@ def raw_execute(sql, name, async: false, allow_retry: false, materialize_transac
10296
with_raw_connection(allow_retry: allow_retry, materialize_transactions: materialize_transactions) do |conn|
10397
sync_timezone_changes(conn)
10498
result = conn.query(sql)
99+
conn.abandon_results!
105100
verified!
106101
handle_warnings(sql)
107102
notification_payload[:row_count] = result&.size || 0

activerecord/lib/active_record/connection_adapters/trilogy/database_statements.rb

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,6 @@ module ActiveRecord
44
module ConnectionAdapters
55
module Trilogy
66
module DatabaseStatements
7-
def select_all(*, **) # :nodoc:
8-
result = super
9-
with_raw_connection do |conn|
10-
conn.next_result while conn.more_results_exist?
11-
end
12-
result
13-
end
14-
157
def internal_exec_query(sql, name = "SQL", binds = [], prepare: false, async: false, allow_retry: false) # :nodoc:
168
sql = transform_query(sql)
179
check_if_write_query(sql)
@@ -47,6 +39,9 @@ def raw_execute(sql, name, async: false, allow_retry: false, materialize_transac
4739
with_raw_connection(allow_retry: allow_retry, materialize_transactions: materialize_transactions) do |conn|
4840
sync_timezone_changes(conn)
4941
result = conn.query(sql)
42+
while conn.more_results_exist?
43+
conn.next_result
44+
end
5045
verified!
5146
handle_warnings(sql)
5247
notification_payload[:row_count] = result.count
@@ -77,7 +72,6 @@ def execute_batch(statements, name = nil)
7772
combine_multi_statements(statements).each do |statement|
7873
with_raw_connection do |conn|
7974
raw_execute(statement, name)
80-
conn.next_result while conn.more_results_exist?
8175
end
8276
end
8377
end

0 commit comments

Comments
 (0)