diff --git a/CHANGELOG.md b/CHANGELOG.md index 40bee95dc..e8eb67001 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## Unreleased + +#### Fixed + +- [#1306](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1306) Fix affected rows count when lowercase schema reflection enabled + ## v8.0.2 #### Fixed diff --git a/lib/active_record/connection_adapters/sqlserver/database_statements.rb b/lib/active_record/connection_adapters/sqlserver/database_statements.rb index 9e36d61aa..41fbd12aa 100644 --- a/lib/active_record/connection_adapters/sqlserver/database_statements.rb +++ b/lib/active_record/connection_adapters/sqlserver/database_statements.rb @@ -39,7 +39,8 @@ def cast_result(raw_result) end def affected_rows(raw_result) - raw_result.first['AffectedRows'] + column_name = lowercase_schema_reflection ? 'affectedrows' : 'AffectedRows' + raw_result.first[column_name] end def raw_execute(sql, name = nil, binds = [], prepare: false, async: false, allow_retry: false, materialize_transactions: true, batch: false) diff --git a/test/cases/adapter_test_sqlserver.rb b/test/cases/adapter_test_sqlserver.rb index 96cc70bf0..5f6c64784 100644 --- a/test/cases/adapter_test_sqlserver.rb +++ b/test/cases/adapter_test_sqlserver.rb @@ -7,6 +7,7 @@ require "models/subscriber" require "models/minimalistic" require "models/college" +require "models/discount" class AdapterTestSQLServer < ActiveRecord::TestCase fixtures :tasks @@ -183,6 +184,24 @@ class AdapterTestSQLServer < ActiveRecord::TestCase assert_equal "Favorite number?", SSTestUppered.last.column1 assert SSTestUppered.columns_hash["column2"] end + + it "destroys model with no associations" do + connection.lowercase_schema_reflection = true + + assert_nothing_raised do + discount = Discount.create! + discount.destroy! + end + end + + it "destroys model with association" do + connection.lowercase_schema_reflection = true + + assert_nothing_raised do + post = Post.create!(title: 'Setup', body: 'Record to be deleted') + post.destroy! + end + end end describe "identity inserts" do