From e5fc2d6cd0797d2b70cca45dd56b4b208c1e9271 Mon Sep 17 00:00:00 2001 From: Aidan Haran Date: Wed, 19 Mar 2025 12:05:46 +0000 Subject: [PATCH 1/5] Correctly parse the database version --- .../connection_adapters/sqlserver_adapter.rb | 4 +--- test/cases/helper_sqlserver.rb | 8 ++++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/active_record/connection_adapters/sqlserver_adapter.rb b/lib/active_record/connection_adapters/sqlserver_adapter.rb index 170f3286b..3a8849674 100644 --- a/lib/active_record/connection_adapters/sqlserver_adapter.rb +++ b/lib/active_record/connection_adapters/sqlserver_adapter.rb @@ -492,13 +492,11 @@ def version_year else /SQL Server (\d+)/.match(sqlserver_version).to_a.last.to_s.to_i end - rescue - 2016 end end def sqlserver_version - @sqlserver_version ||= _raw_select("SELECT @@version", @raw_connection).first.first.to_s + @sqlserver_version ||= execute("SELECT @@VERSION").rows.first.first.to_s end private diff --git a/test/cases/helper_sqlserver.rb b/test/cases/helper_sqlserver.rb index 411d4c08d..4be7683b8 100644 --- a/test/cases/helper_sqlserver.rb +++ b/test/cases/helper_sqlserver.rb @@ -15,6 +15,14 @@ require "support/query_assertions" require "mocha/minitest" +Minitest.after_run do + puts "\n\n" + puts "=" * 80 + puts ActiveRecord::Base.lease_connection.send(:sqlserver_version) + puts "\nSQL Server Version Year: #{ActiveRecord::Base.lease_connection.get_database_version}" + puts "=" * 80 +end + module ActiveSupport class TestCase < ::Minitest::Test include ARTest::SQLServer::CoerceableTest From ea80f48e8646abddfe8575a562257804300d8009 Mon Sep 17 00:00:00 2001 From: Aidan Haran Date: Thu, 20 Mar 2025 09:09:26 +0000 Subject: [PATCH 2/5] Update sqlserver_adapter.rb --- lib/active_record/connection_adapters/sqlserver_adapter.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/active_record/connection_adapters/sqlserver_adapter.rb b/lib/active_record/connection_adapters/sqlserver_adapter.rb index 3a8849674..965f8facd 100644 --- a/lib/active_record/connection_adapters/sqlserver_adapter.rb +++ b/lib/active_record/connection_adapters/sqlserver_adapter.rb @@ -496,7 +496,7 @@ def version_year end def sqlserver_version - @sqlserver_version ||= execute("SELECT @@VERSION").rows.first.first.to_s + @sqlserver_version ||= execute("SELECT @@version").rows.first.first.to_s end private From 4056a3957d8b95c6ac803f8d0a98731757b93438 Mon Sep 17 00:00:00 2001 From: Aidan Haran Date: Thu, 20 Mar 2025 14:59:03 +0000 Subject: [PATCH 3/5] Mark version query as a SCHEMA query --- lib/active_record/connection_adapters/sqlserver_adapter.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/active_record/connection_adapters/sqlserver_adapter.rb b/lib/active_record/connection_adapters/sqlserver_adapter.rb index 965f8facd..02702be32 100644 --- a/lib/active_record/connection_adapters/sqlserver_adapter.rb +++ b/lib/active_record/connection_adapters/sqlserver_adapter.rb @@ -496,7 +496,7 @@ def version_year end def sqlserver_version - @sqlserver_version ||= execute("SELECT @@version").rows.first.first.to_s + @sqlserver_version ||= execute("SELECT @@version", "SCHEMA").rows.first.first.to_s end private From ebe487c0fc16af8b70784ef182bd4480adc1bf2c Mon Sep 17 00:00:00 2001 From: Aidan Haran Date: Thu, 20 Mar 2025 15:46:11 +0000 Subject: [PATCH 4/5] Standardrb --- lib/active_record/connection_adapters/sqlserver_adapter.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/active_record/connection_adapters/sqlserver_adapter.rb b/lib/active_record/connection_adapters/sqlserver_adapter.rb index 02702be32..1669b458f 100644 --- a/lib/active_record/connection_adapters/sqlserver_adapter.rb +++ b/lib/active_record/connection_adapters/sqlserver_adapter.rb @@ -486,13 +486,12 @@ def initialize_dateformatter end def version_year - @version_year ||= begin + @version_year ||= if /vNext/.match?(sqlserver_version) 2016 else /SQL Server (\d+)/.match(sqlserver_version).to_a.last.to_s.to_i end - end end def sqlserver_version From 56904237756502ba8083a1ad0aa055990001063a Mon Sep 17 00:00:00 2001 From: Aidan Haran Date: Thu, 20 Mar 2025 15:52:53 +0000 Subject: [PATCH 5/5] Update CHANGELOG.md --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c8b5e367..86cbcb794 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,5 +8,8 @@ - [#1273](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1273) TinyTDS v3+ is now required. +#### Fixed + +- [#1313](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1313) Correctly retrieve the SQL Server database version. Please check [8-0-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/8-0-stable/CHANGELOG.md) for previous changes.