Skip to content

Commit 5cb2520

Browse files
committed
Add row_count field to sql.active_record notification
1 parent b64b4f6 commit 5cb2520

File tree

1 file changed

+16
-18
lines changed

1 file changed

+16
-18
lines changed

lib/active_record/connection_adapters/sqlserver/database_statements.rb

+16-18
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ def write_query?(sql) # :nodoc:
1414
end
1515

1616
def raw_execute(sql, name, async: false, allow_retry: false, materialize_transactions: true)
17-
result = nil
18-
1917
log(sql, name, async: async) do
2018
with_raw_connection(allow_retry: allow_retry, materialize_transactions: materialize_transactions) do |conn|
2119
result = if id_insert_table_name = query_requires_identity_insert?(sql)
@@ -24,14 +22,12 @@ def raw_execute(sql, name, async: false, allow_retry: false, materialize_transac
2422
internal_raw_execute(sql, conn, perform_do: true)
2523
end
2624
verified!
25+
result
2726
end
2827
end
29-
30-
result
3128
end
3229

3330
def internal_exec_query(sql, name = "SQL", binds = [], prepare: false, async: false, allow_retry: false)
34-
result = nil
3531
sql = transform_query(sql)
3632

3733
check_if_write_query(sql)
@@ -42,20 +38,21 @@ def internal_exec_query(sql, name = "SQL", binds = [], prepare: false, async: fa
4238
sql = sp_executesql_sql(sql, types, params, name)
4339
end
4440

45-
log(sql, name, binds, async: async) do
41+
log(sql, name, binds, async: async) do |notification_payload|
4642
with_raw_connection do |conn|
47-
if id_insert_table_name = query_requires_identity_insert?(sql)
48-
with_identity_insert_enabled(id_insert_table_name, conn) do
49-
result = internal_exec_sql_query(sql, conn)
50-
end
51-
else
52-
result = internal_exec_sql_query(sql, conn)
53-
end
43+
result = if id_insert_table_name = query_requires_identity_insert?(sql)
44+
with_identity_insert_enabled(id_insert_table_name, conn) do
45+
internal_exec_sql_query(sql, conn)
46+
end
47+
else
48+
internal_exec_sql_query(sql, conn)
49+
end
50+
5451
verified!
52+
notification_payload[:row_count] = result.count
53+
result
5554
end
5655
end
57-
58-
result
5956
end
6057

6158
def internal_exec_sql_query(sql, conn)
@@ -174,7 +171,7 @@ def execute_procedure(proc_name, *variables)
174171
end.join(", ")
175172
sql = "EXEC #{proc_name} #{vars}".strip
176173

177-
log(sql, "Execute Procedure") do
174+
log(sql, "Execute Procedure") do |notification_payload|
178175
with_raw_connection do |conn|
179176
result = internal_raw_execute(sql, conn)
180177
verified!
@@ -185,10 +182,11 @@ def execute_procedure(proc_name, *variables)
185182
yield(r) if block_given?
186183
end
187184

188-
result.each.map { |row| row.is_a?(Hash) ? row.with_indifferent_access : row }
185+
result = result.each.map { |row| row.is_a?(Hash) ? row.with_indifferent_access : row }
186+
notification_payload[:row_count] = result.count
187+
result
189188
end
190189
end
191-
192190
end
193191

194192
def with_identity_insert_enabled(table_name, conn)

0 commit comments

Comments
 (0)