Skip to content

Commit ce31a4b

Browse files
committed
Correctly retrieve the SQL Server database version
1 parent ebba7f3 commit ce31a4b

File tree

4 files changed

+28
-6
lines changed

4 files changed

+28
-6
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
1+
## Unreleased
2+
3+
#### Fixed
4+
5+
- [#](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/) Correctly retrieve the SQL Server database version.
6+
17
## v8.0.8
28

39
#### Changed
410

511
- [#1342](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1342) Support more Azure services by changing language source.
612

713
#### Fixed
14+
815
- [#1345](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1345) Maintain index options during `change_column` operations.
916
- [#1357](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1357) Support cross database inserts.
1017

lib/active_record/connection_adapters/sqlserver_adapter.rb

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -481,19 +481,16 @@ def initialize_dateformatter
481481
end
482482

483483
def version_year
484-
@version_year ||= begin
485-
if sqlserver_version =~ /vNext/
484+
@version_year ||=
485+
if /vNext/.match?(sqlserver_version)
486486
2016
487487
else
488488
/SQL Server (\d+)/.match(sqlserver_version).to_a.last.to_s.to_i
489489
end
490-
rescue StandardError
491-
2016
492-
end
493490
end
494491

495492
def sqlserver_version
496-
@sqlserver_version ||= _raw_select("SELECT @@version", @raw_connection).first.first.to_s
493+
@sqlserver_version ||= execute("SELECT @@version", "SCHEMA").rows.first.first.to_s
497494
end
498495

499496
private

test/cases/adapter_test_sqlserver.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,16 @@ class AdapterTestSQLServer < ActiveRecord::TestCase
135135
end
136136
end
137137

138+
it 'valid connection before fetching SQL Server version' do
139+
connection.disconnect!
140+
141+
assert_nothing_raised do
142+
version = connection.sqlserver_version
143+
assert version.is_a?(String)
144+
assert version.length > 0
145+
end
146+
end
147+
138148
describe "with different language" do
139149
before do
140150
@default_language = connection.user_options_language

test/cases/helper_sqlserver.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,14 @@
1515
require "support/query_assertions"
1616
require "mocha/minitest"
1717

18+
Minitest.after_run do
19+
puts "\n\n"
20+
puts "=" * 80
21+
puts ActiveRecord::Base.lease_connection.send(:sqlserver_version)
22+
puts "\nSQL Server Version Year: #{ActiveRecord::Base.lease_connection.get_database_version}"
23+
puts "=" * 80
24+
end
25+
1826
module ActiveSupport
1927
class TestCase < ::Minitest::Test
2028
include ARTest::SQLServer::CoerceableTest

0 commit comments

Comments
 (0)