From 31931f730bc3b7bdcfaabae5d285d3d12e65cce4 Mon Sep 17 00:00:00 2001 From: Aidan Haran Date: Tue, 13 Apr 2021 14:38:28 +0100 Subject: [PATCH] Changes to get tests running against Rails 6.1 --- .../sqlserver/database_statements.rb | 12 ++++----- .../sqlserver/schema_creation.rb | 6 ++++- .../sqlserver/schema_statements.rb | 2 +- .../sqlserver/transaction.rb | 4 +-- test/support/sql_counter_sqlserver.rb | 26 ++++++++++--------- 5 files changed, 28 insertions(+), 22 deletions(-) diff --git a/lib/active_record/connection_adapters/sqlserver/database_statements.rb b/lib/active_record/connection_adapters/sqlserver/database_statements.rb index a3869cdc2..3596af9dd 100644 --- a/lib/active_record/connection_adapters/sqlserver/database_statements.rb +++ b/lib/active_record/connection_adapters/sqlserver/database_statements.rb @@ -54,7 +54,7 @@ def exec_update(sql, name, binds) end def begin_db_transaction - do_execute "BEGIN TRANSACTION" + do_execute "BEGIN TRANSACTION", "TRANSACTION" end def transaction_isolation_levels @@ -67,25 +67,25 @@ def begin_isolated_db_transaction(isolation) end def set_transaction_isolation_level(isolation_level) - do_execute "SET TRANSACTION ISOLATION LEVEL #{isolation_level}" + do_execute "SET TRANSACTION ISOLATION LEVEL #{isolation_level}", "TRANSACTION" end def commit_db_transaction - do_execute "COMMIT TRANSACTION" + do_execute "COMMIT TRANSACTION", "TRANSACTION" end def exec_rollback_db_transaction - do_execute "IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION" + do_execute "IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION", "TRANSACTION" end include Savepoints def create_savepoint(name = current_savepoint_name) - do_execute "SAVE TRANSACTION #{name}" + do_execute "SAVE TRANSACTION #{name}", "TRANSACTION" end def exec_rollback_to_savepoint(name = current_savepoint_name) - do_execute "ROLLBACK TRANSACTION #{name}" + do_execute "ROLLBACK TRANSACTION #{name}", "TRANSACTION" end def release_savepoint(name = current_savepoint_name) diff --git a/lib/active_record/connection_adapters/sqlserver/schema_creation.rb b/lib/active_record/connection_adapters/sqlserver/schema_creation.rb index 4f65bd228..4753e8b5e 100644 --- a/lib/active_record/connection_adapters/sqlserver/schema_creation.rb +++ b/lib/active_record/connection_adapters/sqlserver/schema_creation.rb @@ -3,9 +3,13 @@ module ActiveRecord module ConnectionAdapters module SQLServer - class SchemaCreation < AbstractAdapter::SchemaCreation + class SchemaCreation < SchemaCreation private + def supports_index_using? + false + end + def visit_TableDefinition(o) if_not_exists = o.if_not_exists diff --git a/lib/active_record/connection_adapters/sqlserver/schema_statements.rb b/lib/active_record/connection_adapters/sqlserver/schema_statements.rb index 7d19774a8..f4bf1c6eb 100644 --- a/lib/active_record/connection_adapters/sqlserver/schema_statements.rb +++ b/lib/active_record/connection_adapters/sqlserver/schema_statements.rb @@ -27,7 +27,7 @@ def drop_table(table_name, **options) end end if options[:if_exists] && @version_year < 2016 - execute "IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = #{quote(table_name)}) DROP TABLE #{quote_table_name(table_name)}" + execute "IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = #{quote(table_name)}) DROP TABLE #{quote_table_name(table_name)}", "SCHEMA" else super end diff --git a/lib/active_record/connection_adapters/sqlserver/transaction.rb b/lib/active_record/connection_adapters/sqlserver/transaction.rb index d25617e9e..84e13ede1 100644 --- a/lib/active_record/connection_adapters/sqlserver/transaction.rb +++ b/lib/active_record/connection_adapters/sqlserver/transaction.rb @@ -31,9 +31,9 @@ def current_isolation_level module SQLServerRealTransaction attr_reader :starting_isolation_level - def initialize(connection, options, **args) + def initialize(connection, **args) @connection = connection - @starting_isolation_level = current_isolation_level if options[:isolation] + @starting_isolation_level = current_isolation_level if args[:isolation] super end diff --git a/test/support/sql_counter_sqlserver.rb b/test/support/sql_counter_sqlserver.rb index 20819cf6a..acf51208e 100644 --- a/test/support/sql_counter_sqlserver.rb +++ b/test/support/sql_counter_sqlserver.rb @@ -11,17 +11,19 @@ def capture_sql_ss end end - ignored_sql = [ - /INFORMATION_SCHEMA\.(TABLES|VIEWS|COLUMNS|KEY_COLUMN_USAGE)/im, - /sys.columns/i, - /SELECT @@version/, - /SELECT @@TRANCOUNT/, - /(BEGIN|COMMIT|ROLLBACK|SAVE) TRANSACTION/, - /SELECT CAST\(.* AS .*\) AS value/, - /SELECT DATABASEPROPERTYEX/im - ] - - sqlcounter = ObjectSpace.each_object(ActiveRecord::SQLCounter).to_a.first - sqlcounter.instance_variable_set :@ignore, Regexp.union(ignored_sql.push(sqlcounter.ignore)) + # TODO: Delete the code below after all Rails 6.1 tests passing. + # + # ignored_sql = [ + # /INFORMATION_SCHEMA\.(TABLES|VIEWS|COLUMNS|KEY_COLUMN_USAGE)/im, + # /sys.columns/i, + # /SELECT @@version/, + # /SELECT @@TRANCOUNT/, + # /(BEGIN|COMMIT|ROLLBACK|SAVE) TRANSACTION/, + # /SELECT CAST\(.* AS .*\) AS value/, + # /SELECT DATABASEPROPERTYEX/im + # ] + # + # sqlcounter = ObjectSpace.each_object(ActiveRecord::SQLCounter).to_a.first + # sqlcounter.instance_variable_set :@ignore, Regexp.union(ignored_sql.push(sqlcounter.ignore)) end end