Skip to content

Commit bba549f

Browse files
authored
Register the adapter and lease connections
1 parent c0088ce commit bba549f

17 files changed

+33
-45
lines changed

lib/active_record/connection_adapters/sqlserver/core_ext/attribute_methods.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ module AttributeMethods
1010
private
1111

1212
def attributes_for_update(attribute_names)
13-
return super unless self.class.connection.adapter_name == "SQLServer"
13+
return super unless self.class.lease_connection.adapter_name == "SQLServer"
1414

1515
super.reject do |name|
1616
column = self.class.columns_hash[name]

lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ module SQLServer
99
module CoreExt
1010
module Calculations
1111
def calculate(operation, column_name)
12-
if klass.connection.sqlserver?
12+
if klass.lease_connection.sqlserver?
1313
_calculate(operation, column_name)
1414
else
1515
super
@@ -54,7 +54,7 @@ def _calculate(operation, column_name)
5454
end
5555

5656
def build_count_subquery(relation, column_name, distinct)
57-
return super unless klass.connection.adapter_name == "SQLServer"
57+
return super unless klass.lease_connection.adapter_name == "SQLServer"
5858

5959
super(relation.unscope(:order), column_name, distinct)
6060
end

lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ module Explain
99
SQLSERVER_STATEMENT_REGEXP = /N'(.+)', N'(.+)', (.+)/
1010

1111
def exec_explain(queries, options = [])
12-
return super unless connection.adapter_name == "SQLServer"
12+
return super unless lease_connection.adapter_name == "SQLServer"
1313

1414
unprepared_queries = queries.map do |(sql, binds)|
1515
[unprepare_sqlserver_statement(sql, binds), binds]

lib/active_record/connection_adapters/sqlserver/core_ext/finder_methods.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ module FinderMethods
1111
private
1212

1313
def construct_relation_for_exists(conditions)
14-
if klass.connection.sqlserver?
14+
if klass.lease_connection.sqlserver?
1515
_construct_relation_for_exists(conditions)
1616
else
1717
super

lib/active_record/connection_adapters/sqlserver_adapter.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,13 @@
2929
require "active_record/connection_adapters/sqlserver/table_definition"
3030
require "active_record/connection_adapters/sqlserver/quoting"
3131
require "active_record/connection_adapters/sqlserver/utils"
32-
require "active_record/sqlserver_base"
3332
require "active_record/connection_adapters/sqlserver_column"
3433
require "active_record/tasks/sqlserver_database_tasks"
3534

3635
module ActiveRecord
3736
module ConnectionAdapters
37+
register "sqlserver", "ActiveRecord::ConnectionAdapters::SQLServerAdapter", "active_record/connection_adapters/sqlserver_adapter"
38+
3839
class SQLServerAdapter < AbstractAdapter
3940
include SQLServer::Version,
4041
SQLServer::Quoting,

lib/active_record/sqlserver_base.rb

-13
This file was deleted.

test/cases/adapter_test_sqlserver.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -508,7 +508,7 @@ class AdapterTestSQLServer < ActiveRecord::TestCase
508508

509509
describe "block writes to a database" do
510510
def setup
511-
@conn = ActiveRecord::Base.connection
511+
@conn = ActiveRecord::Base.lease_connection
512512
end
513513

514514
def test_errors_when_an_insert_query_is_called_while_preventing_writes

test/cases/coerced_tests.rb

+11-11
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ class BasicsTest < ActiveRecord::TestCase
197197
# Use square brackets as SQL Server escaped character
198198
coerce_tests! :test_column_names_are_escaped
199199
def test_column_names_are_escaped_coerced
200-
conn = ActiveRecord::Base.connection
200+
conn = ActiveRecord::Base.lease_connection
201201
assert_equal "[t]]]", conn.quote_column_name("t]")
202202
end
203203

@@ -236,7 +236,7 @@ def test_update_date_time_attributes_with_default_timezone_local
236236
ActiveRecord::Base.while_preventing_writes do
237237
assert_queries(1, ignore_none: true) do
238238
Bird.transaction do
239-
ActiveRecord::Base.connection.materialize_transactions
239+
ActiveRecord::Base.lease_connection.materialize_transactions
240240
end
241241
end
242242
end
@@ -1542,9 +1542,9 @@ def test_dump_schema_information_outputs_lexically_reverse_ordered_versions_rega
15421542
@schema_migration.create_version(v)
15431543
end
15441544

1545-
schema_info = ActiveRecord::Base.connection.dump_schema_information
1545+
schema_info = ActiveRecord::Base.lease_connection.dump_schema_information
15461546
expected = <<~STR
1547-
INSERT INTO #{ActiveRecord::Base.connection.quote_table_name("schema_migrations")} (version) VALUES
1547+
INSERT INTO #{ActiveRecord::Base.lease_connection.quote_table_name("schema_migrations")} (version) VALUES
15481548
(N'20100301010101'),
15491549
(N'20100201010101'),
15501550
(N'20100101010101');
@@ -1602,7 +1602,7 @@ class SchemaDumperDefaultsCoerceTest < ActiveRecord::TestCase
16021602
include SchemaDumpingHelper
16031603

16041604
setup do
1605-
@connection = ActiveRecord::Base.connection
1605+
@connection = ActiveRecord::Base.lease_connection
16061606
@connection.create_table :dump_defaults, force: true do |t|
16071607
t.string :string_with_default, default: "Hello!"
16081608
t.date :date_with_default, default: "2014-06-05"
@@ -2213,15 +2213,15 @@ def test_insert_all_coerced
22132213
Task.cache { Task.insert({ starting: Time.now }) }
22142214
end
22152215

2216-
assert_called(ActiveRecord::Base.connection, :clear_query_cache, times: 2) do
2216+
assert_called(ActiveRecord::Base.lease_connection, :clear_query_cache, times: 2) do
22172217
Task.cache { Task.insert_all!([{ starting: Time.now }]) }
22182218
end
22192219

2220-
assert_called(ActiveRecord::Base.connection, :clear_query_cache, times: 2) do
2220+
assert_called(ActiveRecord::Base.lease_connection, :clear_query_cache, times: 2) do
22212221
Task.cache { Task.insert!({ starting: Time.now }) }
22222222
end
22232223

2224-
assert_called(ActiveRecord::Base.connection, :clear_query_cache, times: 2) do
2224+
assert_called(ActiveRecord::Base.lease_connection, :clear_query_cache, times: 2) do
22252225
Task.cache { Task.insert_all!([{ starting: Time.now }]) }
22262226
end
22272227

@@ -2287,7 +2287,7 @@ class MarshalSerializationTest < ActiveRecord::TestCase
22872287
undef_method :marshal_fixture_path
22882288
def marshal_fixture_path(file_name)
22892289
File.expand_path(
2290-
"support/marshal_compatibility_fixtures/#{ActiveRecord::Base.connection.adapter_name}/#{file_name}.dump",
2290+
"support/marshal_compatibility_fixtures/#{ActiveRecord::Base.lease_connection.adapter_name}/#{file_name}.dump",
22912291
ARTest::SQLServer.test_root_sqlserver
22922292
)
22932293
end
@@ -2379,7 +2379,7 @@ class BasePreventWritesTest < ActiveRecord::TestCase
23792379
ActiveRecord::Base.while_preventing_writes do
23802380
assert_queries(1, ignore_none: true) do
23812381
Bird.transaction do
2382-
ActiveRecord::Base.connection.materialize_transactions
2382+
ActiveRecord::Base.lease_connection.materialize_transactions
23832383
end
23842384
end
23852385
end
@@ -2489,7 +2489,7 @@ def test_sqlcommenter_format_value_string_coercible_coerced
24892489
def test_invalid_encoding_query_coerced
24902490
ActiveRecord::QueryLogs.tags = [ :application ]
24912491
assert_raises ActiveRecord::StatementInvalid do
2492-
ActiveRecord::Base.connection.execute "select 1 as '\xFF'"
2492+
ActiveRecord::Base.lease_connection.execute "select 1 as '\xFF'"
24932493
end
24942494
end
24952495
end

test/cases/disconnected_test_sqlserver.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class TestDisconnectedAdapter < ActiveRecord::TestCase
77

88
undef_method :setup
99
def setup
10-
@connection = ActiveRecord::Base.connection
10+
@connection = ActiveRecord::Base.lease_connection
1111
end
1212

1313
teardown do

test/cases/json_test_sqlserver.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
require "cases/helper_sqlserver"
44

5-
if ActiveRecord::Base.connection.supports_json?
5+
if ActiveRecord::Base.lease_connection.supports_json?
66
class JsonTestSQLServer < ActiveRecord::TestCase
77
before do
88
@o1 = SSTestDatatypeMigrationJson.create! json_col: { "a" => "a", "b" => "b", "c" => "c" }

test/cases/lateral_test_sqlserver.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class LateralTestSQLServer < ActiveRecord::TestCase
1616
eq = Arel::Nodes::Equality.new(one, one)
1717

1818
sql = author.project(Arel.star).where(author[:name].matches("David")).outer_join(subselect.lateral.as("bar")).on(eq).to_sql
19-
results = ActiveRecord::Base.connection.exec_query sql
19+
results = ActiveRecord::Base.lease_connection.exec_query sql
2020
assert_equal sql, "SELECT * FROM [authors] OUTER APPLY (SELECT * FROM [posts] WHERE [posts].[author_id] = [authors].[id] AND [posts].[id] = 42 ORDER BY [posts].[id] ASC OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY) AS bar WHERE [authors].[name] LIKE N'David'"
2121
assert_equal results.length, 1
2222
end
@@ -27,7 +27,7 @@ class LateralTestSQLServer < ActiveRecord::TestCase
2727
subselect = post.project(Arel.star).take(1).where(post[:author_id].eq(author[:id])).where(post[:id].eq(42))
2828

2929
sql = author.project(Arel.star).where(author[:name].matches("David")).join(subselect.lateral.as("bar")).to_sql
30-
results = ActiveRecord::Base.connection.exec_query sql
30+
results = ActiveRecord::Base.lease_connection.exec_query sql
3131

3232
assert_equal sql, "SELECT * FROM [authors] CROSS APPLY (SELECT * FROM [posts] WHERE [posts].[author_id] = [authors].[id] AND [posts].[id] = 42 ORDER BY [posts].[id] ASC OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY) AS bar WHERE [authors].[name] LIKE N'David'"
3333
assert_equal results.length, 0

test/cases/primary_keys_test_sqlserver.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class Barcode < ActiveRecord::Base
1212
end
1313

1414
setup do
15-
@connection = ActiveRecord::Base.connection
15+
@connection = ActiveRecord::Base.lease_connection
1616
@connection.create_table(:barcodes, primary_key: "code", id: :uuid, force: true)
1717
end
1818

@@ -50,7 +50,7 @@ class Widget < ActiveRecord::Base
5050
end
5151

5252
setup do
53-
@connection = ActiveRecord::Base.connection
53+
@connection = ActiveRecord::Base.lease_connection
5454
end
5555

5656
teardown do

test/cases/schema_dumper_test_sqlserver.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
class SchemaDumperTestSQLServer < ActiveRecord::TestCase
66
before { all_tables }
77

8-
let(:all_tables) { ActiveRecord::Base.connection.tables }
8+
let(:all_tables) { ActiveRecord::Base.lease_connection.tables }
99
let(:schema) { @generated_schema }
1010

1111
it "sst_datatypes" do
@@ -166,7 +166,7 @@ def generate_schema_for_table(*table_names)
166166

167167
stream = StringIO.new
168168
ActiveRecord::SchemaDumper.ignore_tables = all_tables - table_names
169-
ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, stream)
169+
ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.lease_connection, stream)
170170
@generated_schema = stream.string
171171
yield @generated_schema if block_given?
172172
@schema_lines = Hash.new

test/cases/specific_schema_test_sqlserver.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -159,14 +159,14 @@ def quoted_id
159159

160160
it "returns a new id via connection newid_function" do
161161
acceptable_uuid = ActiveRecord::ConnectionAdapters::SQLServer::Type::Uuid::ACCEPTABLE_UUID
162-
db_uuid = ActiveRecord::Base.connection.newid_function
162+
db_uuid = ActiveRecord::Base.lease_connection.newid_function
163163
_(db_uuid).must_match(acceptable_uuid)
164164
end
165165

166166
# with similar table definition in two schemas
167167

168168
it "returns the correct primary columns" do
169-
connection = ActiveRecord::Base.connection
169+
connection = ActiveRecord::Base.lease_connection
170170
assert_equal "field_1", connection.columns("test.sst_schema_test_mulitple_schema").detect(&:is_primary?).name
171171
assert_equal "field_2", connection.columns("test2.sst_schema_test_mulitple_schema").detect(&:is_primary?).name
172172
end

test/cases/view_test_sqlserver.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
require "cases/helper_sqlserver"
44

55
class ViewTestSQLServer < ActiveRecord::TestCase
6-
let(:connection) { ActiveRecord::Base.connection }
6+
let(:connection) { ActiveRecord::Base.lease_connection }
77

88
describe 'view with default values' do
99
before do

test/support/connection_reflection.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ module ConnectionReflection
88
included { extend ConnectionReflection }
99

1010
def connection
11-
ActiveRecord::Base.connection
11+
ActiveRecord::Base.lease_connection
1212
end
1313

1414
def connection_options

test/support/test_in_memory_oltp.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88

99
ARTest.connect
1010

11-
if ActiveRecord::Base.connection.supports_in_memory_oltp?
11+
if ActiveRecord::Base.lease_connection.supports_in_memory_oltp?
1212
puts "Configuring In-Memory OLTP..."
1313
inmem_file = ARTest::SQLServer.test_root_sqlserver, "schema", "enable-in-memory-oltp.sql"
1414
inmem_sql = File.read File.join(inmem_file)
15-
ActiveRecord::Base.connection.execute(inmem_sql)
15+
ActiveRecord::Base.lease_connection.execute(inmem_sql)
1616
end
1717
end

0 commit comments

Comments
 (0)