From 6f45abe1d257cecedcad4f1b4e7e8a9bc6877489 Mon Sep 17 00:00:00 2001 From: Aidan Haran Date: Tue, 20 May 2025 14:25:05 +0100 Subject: [PATCH] Add affected_rows to ActiveRecord::Result --- .../sqlserver/database_statements.rb | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/lib/active_record/connection_adapters/sqlserver/database_statements.rb b/lib/active_record/connection_adapters/sqlserver/database_statements.rb index 4aee1e1a2..ab7ddf88f 100644 --- a/lib/active_record/connection_adapters/sqlserver/database_statements.rb +++ b/lib/active_record/connection_adapters/sqlserver/database_statements.rb @@ -30,12 +30,11 @@ def perform_query(raw_connection, sql, binds, type_casted_binds, prepare:, notif result end - def cast_result(raw_result) - if raw_result.columns.empty? - ActiveRecord::Result.empty - else - ActiveRecord::Result.new(raw_result.columns, raw_result.rows) - end + # Method `perform_query` already returns an `ActiveRecord::Result` so we have nothing to cast here. This is + # different to the MySQL/PostgreSQL adapters where the raw result is converted to `ActiveRecord::Result` in + # `cast_result`. + def cast_result(result) + result end # Returns the affected rows from results. @@ -521,7 +520,7 @@ def handle_to_names_and_values(handle, options = {}) columns = columns.last if columns.any? && columns.all? { |e| e.is_a?(Array) } # If query returns multiple result sets, only return the columns of the last one. columns = columns.map(&:downcase) if lowercase_schema_reflection - ActiveRecord::Result.new(columns, results) + ActiveRecord::Result.new(columns, results, affected_rows: handle.affected_rows) else results end