From 72f0e5ed4c4cd15316524786dec1a43192b27d47 Mon Sep 17 00:00:00 2001 From: Lalitha Date: Wed, 10 Apr 2019 17:05:03 +0530 Subject: [PATCH] Fix trigger_test_sqlserver test case failure - use SET NOCOUNT ON so that the number of rows affected by INSERT statement is returned instead of the number of rows affected by the trigger - Refer https://techcommunity.microsoft.com/t5/SQL-Server/UPDATE-with-OUTPUT-clause-8211-Triggers-8211-and-SQLMoreResults/ba-p/383457 --- .../connection_adapters/sqlserver/database_statements.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/active_record/connection_adapters/sqlserver/database_statements.rb b/lib/active_record/connection_adapters/sqlserver/database_statements.rb index 5bf3f81df..98aa47c7f 100644 --- a/lib/active_record/connection_adapters/sqlserver/database_statements.rb +++ b/lib/active_record/connection_adapters/sqlserver/database_statements.rb @@ -208,9 +208,11 @@ def sql_for_insert(sql, pk, id_value, sequence_name, binds) if exclude_output_inserted id_sql_type = exclude_output_inserted.is_a?(TrueClass) ? 'bigint' : exclude_output_inserted <<-SQL.strip_heredoc + SET NOCOUNT ON DECLARE @ssaIdInsertTable table (#{quoted_pk} #{id_sql_type}); #{sql.dup.insert sql.index(/ (DEFAULT )?VALUES/), " OUTPUT INSERTED.#{quoted_pk} INTO @ssaIdInsertTable"} - SELECT CAST(#{quoted_pk} AS #{id_sql_type}) FROM @ssaIdInsertTable + SELECT CAST(#{quoted_pk} AS #{id_sql_type}) FROM @ssaIdInsertTable; + SET NOCOUNT OFF SQL else sql.dup.insert sql.index(/ (DEFAULT )?VALUES/), " OUTPUT INSERTED.#{quoted_pk}"