From 7719b0d9cc93b115bd7cda28494f9b1fdc1b3522 Mon Sep 17 00:00:00 2001 From: Aidan Haran Date: Wed, 13 May 2020 16:30:11 +0100 Subject: [PATCH] Updated Ruby AppVeyor matrix and handle TinyTDS false result --- appveyor.yml | 6 +++++- .../connection_adapters/sqlserver/database_statements.rb | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index bc3ffa6c9..7b4d943de 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -4,7 +4,11 @@ clone_depth: 5 build: off matrix: fast_finish: true - + allow_failures: + - ruby_version: "25" + - ruby_version: "26" + - ruby_version: "27" + - ruby_version: "27-x64" services: - mssql2014 diff --git a/lib/active_record/connection_adapters/sqlserver/database_statements.rb b/lib/active_record/connection_adapters/sqlserver/database_statements.rb index 68813c489..20e0df011 100644 --- a/lib/active_record/connection_adapters/sqlserver/database_statements.rb +++ b/lib/active_record/connection_adapters/sqlserver/database_statements.rb @@ -350,7 +350,12 @@ def sp_executesql_sql(sql, types, params, name) def raw_connection_do(sql) case @connection_options[:mode] when :dblib - @connection.execute(sql).do + result = @connection.execute(sql) + # If connection fails then TinyTDS returns false instead of an exception (see https://github.com/rails-sqlserver/tiny_tds/issues/464) + if result == false + raise TinyTds::Error, 'TinyTDS execute returned false instead of results' + end + result.do end ensure @update_sql = false