diff --git a/lib/active_record/connection_adapters/sqlserver/core_ext/attribute_methods.rb b/lib/active_record/connection_adapters/sqlserver/core_ext/attribute_methods.rb index af0e6a4e7..639874a81 100644 --- a/lib/active_record/connection_adapters/sqlserver/core_ext/attribute_methods.rb +++ b/lib/active_record/connection_adapters/sqlserver/core_ext/attribute_methods.rb @@ -10,11 +10,13 @@ module AttributeMethods private def attributes_for_update(attribute_names) - return super unless self.class.connection.adapter_name == "SQLServer" + self.class.with_connection do |connection| + return super(attribute_names) unless connection.sqlserver? - super.reject do |name| - column = self.class.columns_hash[name] - column && column.respond_to?(:is_identity?) && column.is_identity? + super(attribute_names).reject do |name| + column = self.class.columns_hash[name] + column && column.respond_to?(:is_identity?) && column.is_identity? + end end end end diff --git a/lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb b/lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb index 34355ef53..54af006b7 100644 --- a/lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb +++ b/lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb @@ -9,10 +9,12 @@ module SQLServer module CoreExt module Calculations def calculate(operation, column_name) - if klass.connection.sqlserver? - _calculate(operation, column_name) - else - super + klass.with_connection do |connection| + if connection.sqlserver? + _calculate(operation, column_name) + else + super + end end end @@ -54,9 +56,10 @@ def _calculate(operation, column_name) end def build_count_subquery(relation, column_name, distinct) - return super unless klass.connection.adapter_name == "SQLServer" - - super(relation.unscope(:order), column_name, distinct) + klass.with_connection do |connection| + relation = relation.unscope(:order) if connection.sqlserver? + super(relation, column_name, distinct) + end end end end diff --git a/lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb b/lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb index 4eea43e3d..d9ca051cf 100644 --- a/lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb +++ b/lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb @@ -9,12 +9,14 @@ module Explain SQLSERVER_STATEMENT_REGEXP = /N'(.+)', N'(.+)', (.+)/ def exec_explain(queries, options = []) - return super unless connection.adapter_name == "SQLServer" + with_connection do |connection| + return super(queries, options) unless connection.sqlserver? - unprepared_queries = queries.map do |(sql, binds)| - [unprepare_sqlserver_statement(sql, binds), binds] + unprepared_queries = queries.map do |(sql, binds)| + [unprepare_sqlserver_statement(sql, binds), binds] + end + super(unprepared_queries, options) end - super(unprepared_queries, options) end private diff --git a/lib/active_record/connection_adapters/sqlserver/core_ext/finder_methods.rb b/lib/active_record/connection_adapters/sqlserver/core_ext/finder_methods.rb index fe9271508..6016369c2 100644 --- a/lib/active_record/connection_adapters/sqlserver/core_ext/finder_methods.rb +++ b/lib/active_record/connection_adapters/sqlserver/core_ext/finder_methods.rb @@ -11,10 +11,12 @@ module FinderMethods private def construct_relation_for_exists(conditions) - if klass.connection.sqlserver? - _construct_relation_for_exists(conditions) - else - super + klass.with_connection do |connection| + if connection.sqlserver? + _construct_relation_for_exists(conditions) + else + super + end end end diff --git a/lib/active_record/connection_adapters/sqlserver/core_ext/preloader.rb b/lib/active_record/connection_adapters/sqlserver/core_ext/preloader.rb index 046edb3ea..d7bc7b9e4 100644 --- a/lib/active_record/connection_adapters/sqlserver/core_ext/preloader.rb +++ b/lib/active_record/connection_adapters/sqlserver/core_ext/preloader.rb @@ -8,23 +8,25 @@ module SQLServer module CoreExt module LoaderQuery def load_records_for_keys(keys, &block) - return super unless scope.connection.sqlserver? + scope.with_connection do |connection| + return super unless connection.sqlserver? - return [] if keys.empty? + return [] if keys.empty? - if association_key_name.is_a?(Array) - query_constraints = Hash.new { |hsh, key| hsh[key] = Set.new } + if association_key_name.is_a?(Array) + query_constraints = Hash.new { |hsh, key| hsh[key] = Set.new } - keys.each_with_object(query_constraints) do |values_set, constraints| - association_key_name.zip(values_set).each do |key_name, value| - constraints[key_name] << value + keys.each_with_object(query_constraints) do |values_set, constraints| + association_key_name.zip(values_set).each do |key_name, value| + constraints[key_name] << value + end end - end - scope.where(query_constraints).load(&block) - else - keys.each_slice(in_clause_length).flat_map do |slice| - scope.where(association_key_name => slice).load(&block).records + scope.where(query_constraints).load(&block) + else + keys.each_slice(in_clause_length).flat_map do |slice| + scope.where(association_key_name => slice).load(&block).records + end end end end diff --git a/lib/active_record/connection_adapters/sqlserver_adapter.rb b/lib/active_record/connection_adapters/sqlserver_adapter.rb index 1e272d913..bffaad63a 100644 --- a/lib/active_record/connection_adapters/sqlserver_adapter.rb +++ b/lib/active_record/connection_adapters/sqlserver_adapter.rb @@ -29,12 +29,13 @@ require "active_record/connection_adapters/sqlserver/table_definition" require "active_record/connection_adapters/sqlserver/quoting" require "active_record/connection_adapters/sqlserver/utils" -require "active_record/sqlserver_base" require "active_record/connection_adapters/sqlserver_column" require "active_record/tasks/sqlserver_database_tasks" module ActiveRecord module ConnectionAdapters + register "sqlserver", "ActiveRecord::ConnectionAdapters::SQLServerAdapter", "active_record/connection_adapters/sqlserver_adapter" + class SQLServerAdapter < AbstractAdapter include SQLServer::Version, SQLServer::Quoting, diff --git a/lib/active_record/sqlserver_base.rb b/lib/active_record/sqlserver_base.rb deleted file mode 100644 index 9dbcbc623..000000000 --- a/lib/active_record/sqlserver_base.rb +++ /dev/null @@ -1,13 +0,0 @@ -# frozen_string_literal: true - -module ActiveRecord - module ConnectionHandling - def sqlserver_adapter_class - ConnectionAdapters::SQLServerAdapter - end - - def sqlserver_connection(config) #:nodoc: - sqlserver_adapter_class.new(config) - end - end -end diff --git a/test/cases/adapter_test_sqlserver.rb b/test/cases/adapter_test_sqlserver.rb index 34394732b..5c392513b 100644 --- a/test/cases/adapter_test_sqlserver.rb +++ b/test/cases/adapter_test_sqlserver.rb @@ -61,8 +61,8 @@ class AdapterTestSQLServer < ActiveRecord::TestCase end it "test table existence across database schemas" do - arunit_connection = Topic.connection - arunit2_connection = College.connection + arunit_connection = Topic.lease_connection + arunit2_connection = College.lease_connection arunit_database = arunit_connection.pool.db_config.database arunit2_database = arunit2_connection.pool.db_config.database @@ -508,7 +508,7 @@ class AdapterTestSQLServer < ActiveRecord::TestCase describe "block writes to a database" do def setup - @conn = ActiveRecord::Base.connection + @conn = ActiveRecord::Base.lease_connection end def test_errors_when_an_insert_query_is_called_while_preventing_writes diff --git a/test/cases/coerced_tests.rb b/test/cases/coerced_tests.rb index 315a2ac45..d2070c97a 100644 --- a/test/cases/coerced_tests.rb +++ b/test/cases/coerced_tests.rb @@ -56,7 +56,7 @@ def test_partial_index_coerced t = Topic.create!(title: "abc") t.author_name = "John" - assert_queries(1) do + assert_queries_count(1) do t.valid? end end @@ -197,7 +197,7 @@ class BasicsTest < ActiveRecord::TestCase # Use square brackets as SQL Server escaped character coerce_tests! :test_column_names_are_escaped def test_column_names_are_escaped_coerced - conn = ActiveRecord::Base.connection + conn = ActiveRecord::Base.lease_connection assert_equal "[t]]]", conn.quote_column_name("t]") end @@ -234,9 +234,9 @@ def test_update_date_time_attributes_with_default_timezone_local coerce_tests! %r{an empty transaction does not raise if preventing writes} test "an empty transaction does not raise if preventing writes coerced" do ActiveRecord::Base.while_preventing_writes do - assert_queries(1, ignore_none: true) do + assert_queries_count(1, ignore_none: true) do Bird.transaction do - ActiveRecord::Base.connection.materialize_transactions + ActiveRecord::Base.lease_connection.materialize_transactions end end end @@ -490,8 +490,8 @@ def test_limit_with_offset_is_kept_coerced coerce_tests! :test_distinct_count_all_with_custom_select_and_order def test_distinct_count_all_with_custom_select_and_order_coerced accounts = Account.distinct.select("credit_limit % 10 AS the_limit").order(Arel.sql("credit_limit % 10")) - assert_queries(1) { assert_equal 3, accounts.count(:all) } - assert_queries(1) { assert_equal 3, accounts.load.size } + assert_queries_count(1) { assert_equal 3, accounts.count(:all) } + assert_queries_count(1) { assert_equal 3, accounts.load.size } end # Leave it up to users to format selects/functions so HAVING works correctly. @@ -1018,7 +1018,7 @@ def test_implicit_order_column_is_configurable_coerced assert_equal topics(:fifth), Topic.first assert_equal topics(:third), Topic.last - c = Topic.connection + c = Topic.lease_connection assert_sql(/ORDER BY #{Regexp.escape(c.quote_table_name("topics.title"))} DESC, #{Regexp.escape(c.quote_table_name("topics.id"))} DESC OFFSET 0 ROWS FETCH NEXT @0 ROWS ONLY.*@0 = 1/i) { Topic.last } @@ -1032,7 +1032,7 @@ def test_implicit_order_set_to_primary_key_coerced old_implicit_order_column = Topic.implicit_order_column Topic.implicit_order_column = "id" - c = Topic.connection + c = Topic.lease_connection assert_sql(/ORDER BY #{Regexp.escape(c.quote_table_name("topics.id"))} DESC OFFSET 0 ROWS FETCH NEXT @0 ROWS ONLY.*@0 = 1/i) { Topic.last } @@ -1046,7 +1046,7 @@ def test_implicit_order_for_model_without_primary_key_coerced old_implicit_order_column = NonPrimaryKey.implicit_order_column NonPrimaryKey.implicit_order_column = "created_at" - c = NonPrimaryKey.connection + c = NonPrimaryKey.lease_connection assert_sql(/ORDER BY #{Regexp.escape(c.quote_table_name("non_primary_keys.created_at"))} DESC OFFSET 0 ROWS FETCH NEXT @0 ROWS ONLY.*@0 = 1/i) { NonPrimaryKey.last @@ -1067,7 +1067,7 @@ def test_member_on_unloaded_relation_with_composite_primary_key_coerced # Check for `FETCH NEXT x ROWS` rather then `LIMIT`. coerce_tests! :test_implicit_order_column_prepends_query_constraints def test_implicit_order_column_prepends_query_constraints_coerced - c = ClothingItem.connection + c = ClothingItem.lease_connection ClothingItem.implicit_order_column = "description" quoted_type = Regexp.escape(c.quote_table_name("clothing_items.clothing_type")) quoted_color = Regexp.escape(c.quote_table_name("clothing_items.color")) @@ -1083,7 +1083,7 @@ def test_implicit_order_column_prepends_query_constraints_coerced # Check for `FETCH NEXT x ROWS` rather then `LIMIT`. coerce_tests! %r{#last for a model with composite query constraints} test "#last for a model with composite query constraints coerced" do - c = ClothingItem.connection + c = ClothingItem.lease_connection quoted_type = Regexp.escape(c.quote_table_name("clothing_items.clothing_type")) quoted_color = Regexp.escape(c.quote_table_name("clothing_items.color")) @@ -1095,7 +1095,7 @@ def test_implicit_order_column_prepends_query_constraints_coerced # Check for `FETCH NEXT x ROWS` rather then `LIMIT`. coerce_tests! %r{#first for a model with composite query constraints} test "#first for a model with composite query constraints coerced" do - c = ClothingItem.connection + c = ClothingItem.lease_connection quoted_type = Regexp.escape(c.quote_table_name("clothing_items.clothing_type")) quoted_color = Regexp.escape(c.quote_table_name("clothing_items.color")) @@ -1107,7 +1107,7 @@ def test_implicit_order_column_prepends_query_constraints_coerced # Check for `FETCH NEXT x ROWS` rather then `LIMIT`. coerce_tests! :test_implicit_order_column_reorders_query_constraints def test_implicit_order_column_reorders_query_constraints_coerced - c = ClothingItem.connection + c = ClothingItem.lease_connection ClothingItem.implicit_order_column = "color" quoted_type = Regexp.escape(c.quote_table_name("clothing_items.clothing_type")) quoted_color = Regexp.escape(c.quote_table_name("clothing_items.color")) @@ -1131,7 +1131,7 @@ def test_include_on_unloaded_relation_with_composite_primary_key_coerced # Check for `FETCH NEXT x ROWS` rather then `LIMIT`. coerce_tests! :test_nth_to_last_with_order_uses_limit def test_nth_to_last_with_order_uses_limit_coerced - c = Topic.connection + c = Topic.lease_connection assert_sql(/ORDER BY #{Regexp.escape(c.quote_table_name("topics.id"))} DESC OFFSET @(\d) ROWS FETCH NEXT @(\d) ROWS ONLY.*@\1 = 1.*@\2 = 1/i) do Topic.second_to_last end @@ -1324,7 +1324,7 @@ def test_create_without_primary_key_no_extra_query_coerced self.table_name = "dashboards" end klass.create! # warmup schema cache - assert_queries(2, ignore_none: true) { klass.create! } + assert_queries_count(2, ignore_none: true) { klass.create! } end end @@ -1354,7 +1354,7 @@ def test_query_cached_even_when_types_are_reset_coerced Task.initialize_find_by_cache Task.define_attribute_methods - assert_queries(1, ignore_none: true) do + assert_queries_count(1, ignore_none: true) do Task.find(1) end @@ -1454,11 +1454,11 @@ def test_relations_dont_load_all_records_in_pretty_print_coerced def test_empty_complex_chained_relations_coerced posts = Post.select("comments_count").where("id is not null").group("author_id", "id").where("legacy_comments_count > 0") - assert_queries(1) { assert_equal false, posts.empty? } + assert_queries_count(1) { assert_equal false, posts.empty? } assert_not_predicate posts, :loaded? no_posts = posts.where(title: "") - assert_queries(1) { assert_equal true, no_posts.empty? } + assert_queries_count(1) { assert_equal true, no_posts.empty? } assert_not_predicate no_posts, :loaded? end @@ -1542,9 +1542,9 @@ def test_dump_schema_information_outputs_lexically_reverse_ordered_versions_rega @schema_migration.create_version(v) end - schema_info = ActiveRecord::Base.connection.dump_schema_information + schema_info = ActiveRecord::Base.lease_connection.dump_schema_information expected = <<~STR - INSERT INTO #{ActiveRecord::Base.connection.quote_table_name("schema_migrations")} (version) VALUES + INSERT INTO #{ActiveRecord::Base.lease_connection.quote_table_name("schema_migrations")} (version) VALUES (N'20100301010101'), (N'20100201010101'), (N'20100101010101'); @@ -1602,7 +1602,7 @@ class SchemaDumperDefaultsCoerceTest < ActiveRecord::TestCase include SchemaDumpingHelper setup do - @connection = ActiveRecord::Base.connection + @connection = ActiveRecord::Base.lease_connection @connection.create_table :dump_defaults, force: true do |t| t.string :string_with_default, default: "Hello!" t.date :date_with_default, default: "2014-06-05" @@ -2213,15 +2213,15 @@ def test_insert_all_coerced Task.cache { Task.insert({ starting: Time.now }) } end - assert_called(ActiveRecord::Base.connection, :clear_query_cache, times: 2) do + assert_called(ActiveRecord::Base.lease_connection, :clear_query_cache, times: 2) do Task.cache { Task.insert_all!([{ starting: Time.now }]) } end - assert_called(ActiveRecord::Base.connection, :clear_query_cache, times: 2) do + assert_called(ActiveRecord::Base.lease_connection, :clear_query_cache, times: 2) do Task.cache { Task.insert!({ starting: Time.now }) } end - assert_called(ActiveRecord::Base.connection, :clear_query_cache, times: 2) do + assert_called(ActiveRecord::Base.lease_connection, :clear_query_cache, times: 2) do Task.cache { Task.insert_all!([{ starting: Time.now }]) } end @@ -2287,7 +2287,7 @@ class MarshalSerializationTest < ActiveRecord::TestCase undef_method :marshal_fixture_path def marshal_fixture_path(file_name) File.expand_path( - "support/marshal_compatibility_fixtures/#{ActiveRecord::Base.connection.adapter_name}/#{file_name}.dump", + "support/marshal_compatibility_fixtures/#{ActiveRecord::Base.lease_connection.adapter_name}/#{file_name}.dump", ARTest::SQLServer.test_root_sqlserver ) end @@ -2338,7 +2338,7 @@ def test_preloads_has_many_on_model_with_a_composite_primary_key_through_id_attr assert_equal 2, sql.size preload_sql = sql.last - c = Cpk::OrderAgreement.connection + c = Cpk::OrderAgreement.lease_connection order_id_column = Regexp.escape(c.quote_table_name("cpk_order_agreements.order_id")) order_id_constraint = /#{order_id_column} = @0.*@0 = \d+$/ expectation = /SELECT.*WHERE.* #{order_id_constraint}/ @@ -2362,7 +2362,7 @@ def test_preloads_belongs_to_a_composite_primary_key_model_through_id_attribute_ assert_equal 2, sql.size preload_sql = sql.last - c = Cpk::Order.connection + c = Cpk::Order.lease_connection order_id = Regexp.escape(c.quote_table_name("cpk_orders.id")) order_constraint = /#{order_id} = @0.*@0 = \d+$/ expectation = /SELECT.*WHERE.* #{order_constraint}/ @@ -2377,9 +2377,9 @@ class BasePreventWritesTest < ActiveRecord::TestCase coerce_tests! %r{an empty transaction does not raise if preventing writes} test "an empty transaction does not raise if preventing writes coerced" do ActiveRecord::Base.while_preventing_writes do - assert_queries(1, ignore_none: true) do + assert_queries_count(1, ignore_none: true) do Bird.transaction do - ActiveRecord::Base.connection.materialize_transactions + ActiveRecord::Base.lease_connection.materialize_transactions end end end @@ -2489,7 +2489,7 @@ def test_sqlcommenter_format_value_string_coercible_coerced def test_invalid_encoding_query_coerced ActiveRecord::QueryLogs.tags = [ :application ] assert_raises ActiveRecord::StatementInvalid do - ActiveRecord::Base.connection.execute "select 1 as '\xFF'" + ActiveRecord::Base.lease_connection.execute "select 1 as '\xFF'" end end end diff --git a/test/cases/disconnected_test_sqlserver.rb b/test/cases/disconnected_test_sqlserver.rb index 2936cf93f..382ca51b2 100644 --- a/test/cases/disconnected_test_sqlserver.rb +++ b/test/cases/disconnected_test_sqlserver.rb @@ -7,7 +7,7 @@ class TestDisconnectedAdapter < ActiveRecord::TestCase undef_method :setup def setup - @connection = ActiveRecord::Base.connection + @connection = ActiveRecord::Base.lease_connection end teardown do diff --git a/test/cases/eager_load_too_many_ids_test_sqlserver.rb b/test/cases/eager_load_too_many_ids_test_sqlserver.rb index 96eaa6cf9..72ba24625 100644 --- a/test/cases/eager_load_too_many_ids_test_sqlserver.rb +++ b/test/cases/eager_load_too_many_ids_test_sqlserver.rb @@ -11,7 +11,7 @@ def test_batch_preloading_too_many_ids # We Monkey patch Preloader to work with batches of 10_000 records. # Expect: N Books queries + Citation query expected_query_count = (Citation.count / in_clause_length.to_f).ceil + 1 - assert_queries(expected_query_count) do + assert_queries_count(expected_query_count) do Citation.preload(:reference_of).to_a.size end end diff --git a/test/cases/json_test_sqlserver.rb b/test/cases/json_test_sqlserver.rb index a863868a8..501210a12 100644 --- a/test/cases/json_test_sqlserver.rb +++ b/test/cases/json_test_sqlserver.rb @@ -2,7 +2,7 @@ require "cases/helper_sqlserver" -if ActiveRecord::Base.connection.supports_json? +if ActiveRecord::Base.lease_connection.supports_json? class JsonTestSQLServer < ActiveRecord::TestCase before do @o1 = SSTestDatatypeMigrationJson.create! json_col: { "a" => "a", "b" => "b", "c" => "c" } diff --git a/test/cases/lateral_test_sqlserver.rb b/test/cases/lateral_test_sqlserver.rb index 17aea3c9b..fb1660110 100644 --- a/test/cases/lateral_test_sqlserver.rb +++ b/test/cases/lateral_test_sqlserver.rb @@ -16,7 +16,7 @@ class LateralTestSQLServer < ActiveRecord::TestCase eq = Arel::Nodes::Equality.new(one, one) sql = author.project(Arel.star).where(author[:name].matches("David")).outer_join(subselect.lateral.as("bar")).on(eq).to_sql - results = ActiveRecord::Base.connection.exec_query sql + results = ActiveRecord::Base.lease_connection.exec_query sql 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'" assert_equal results.length, 1 end @@ -27,7 +27,7 @@ class LateralTestSQLServer < ActiveRecord::TestCase subselect = post.project(Arel.star).take(1).where(post[:author_id].eq(author[:id])).where(post[:id].eq(42)) sql = author.project(Arel.star).where(author[:name].matches("David")).join(subselect.lateral.as("bar")).to_sql - results = ActiveRecord::Base.connection.exec_query sql + results = ActiveRecord::Base.lease_connection.exec_query sql 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'" assert_equal results.length, 0 diff --git a/test/cases/primary_keys_test_sqlserver.rb b/test/cases/primary_keys_test_sqlserver.rb index 433c17de0..8edf3dcfe 100644 --- a/test/cases/primary_keys_test_sqlserver.rb +++ b/test/cases/primary_keys_test_sqlserver.rb @@ -12,7 +12,7 @@ class Barcode < ActiveRecord::Base end setup do - @connection = ActiveRecord::Base.connection + @connection = ActiveRecord::Base.lease_connection @connection.create_table(:barcodes, primary_key: "code", id: :uuid, force: true) end @@ -50,7 +50,7 @@ class Widget < ActiveRecord::Base end setup do - @connection = ActiveRecord::Base.connection + @connection = ActiveRecord::Base.lease_connection end teardown do diff --git a/test/cases/schema_dumper_test_sqlserver.rb b/test/cases/schema_dumper_test_sqlserver.rb index 13ba5b5ce..f6ae6b2c3 100644 --- a/test/cases/schema_dumper_test_sqlserver.rb +++ b/test/cases/schema_dumper_test_sqlserver.rb @@ -5,7 +5,7 @@ class SchemaDumperTestSQLServer < ActiveRecord::TestCase before { all_tables } - let(:all_tables) { ActiveRecord::Base.connection.tables } + let(:all_tables) { ActiveRecord::Base.lease_connection.tables } let(:schema) { @generated_schema } it "sst_datatypes" do @@ -166,7 +166,7 @@ def generate_schema_for_table(*table_names) stream = StringIO.new ActiveRecord::SchemaDumper.ignore_tables = all_tables - table_names - ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, stream) + ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.lease_connection, stream) @generated_schema = stream.string yield @generated_schema if block_given? @schema_lines = Hash.new diff --git a/test/cases/specific_schema_test_sqlserver.rb b/test/cases/specific_schema_test_sqlserver.rb index 6148f0874..c4590ce81 100644 --- a/test/cases/specific_schema_test_sqlserver.rb +++ b/test/cases/specific_schema_test_sqlserver.rb @@ -159,14 +159,14 @@ def quoted_id it "returns a new id via connection newid_function" do acceptable_uuid = ActiveRecord::ConnectionAdapters::SQLServer::Type::Uuid::ACCEPTABLE_UUID - db_uuid = ActiveRecord::Base.connection.newid_function + db_uuid = ActiveRecord::Base.lease_connection.newid_function _(db_uuid).must_match(acceptable_uuid) end # with similar table definition in two schemas it "returns the correct primary columns" do - connection = ActiveRecord::Base.connection + connection = ActiveRecord::Base.lease_connection assert_equal "field_1", connection.columns("test.sst_schema_test_mulitple_schema").detect(&:is_primary?).name assert_equal "field_2", connection.columns("test2.sst_schema_test_mulitple_schema").detect(&:is_primary?).name end diff --git a/test/cases/view_test_sqlserver.rb b/test/cases/view_test_sqlserver.rb index b371bd0b1..73ddf006a 100644 --- a/test/cases/view_test_sqlserver.rb +++ b/test/cases/view_test_sqlserver.rb @@ -3,7 +3,7 @@ require "cases/helper_sqlserver" class ViewTestSQLServer < ActiveRecord::TestCase - let(:connection) { ActiveRecord::Base.connection } + let(:connection) { ActiveRecord::Base.lease_connection } describe 'view with default values' do before do diff --git a/test/support/connection_reflection.rb b/test/support/connection_reflection.rb index a739f76ee..b7fe15ce2 100644 --- a/test/support/connection_reflection.rb +++ b/test/support/connection_reflection.rb @@ -8,7 +8,7 @@ module ConnectionReflection included { extend ConnectionReflection } def connection - ActiveRecord::Base.connection + ActiveRecord::Base.lease_connection end def connection_options diff --git a/test/support/test_in_memory_oltp.rb b/test/support/test_in_memory_oltp.rb index 88c918c92..2b5bb0c19 100644 --- a/test/support/test_in_memory_oltp.rb +++ b/test/support/test_in_memory_oltp.rb @@ -8,10 +8,10 @@ ARTest.connect - if ActiveRecord::Base.connection.supports_in_memory_oltp? + if ActiveRecord::Base.lease_connection.supports_in_memory_oltp? puts "Configuring In-Memory OLTP..." inmem_file = ARTest::SQLServer.test_root_sqlserver, "schema", "enable-in-memory-oltp.sql" inmem_sql = File.read File.join(inmem_file) - ActiveRecord::Base.connection.execute(inmem_sql) + ActiveRecord::Base.lease_connection.execute(inmem_sql) end end