diff --git a/lib/active_record/connection_adapters/odbc_adapter.rb b/lib/active_record/connection_adapters/odbc_adapter.rb index 75316b53..cee68573 100644 --- a/lib/active_record/connection_adapters/odbc_adapter.rb +++ b/lib/active_record/connection_adapters/odbc_adapter.rb @@ -111,7 +111,7 @@ def supports_migrations? # includes checking whether the database is actually capable of # responding, i.e. whether the connection isn't stale. def active? - @connection.connected? + @unconfigured_connection&.connected? end # Disconnects from the database if already connected, and establishes a @@ -119,13 +119,13 @@ def active? def reconnect! disconnect! odbc_module = @config[:encoding] == 'utf8' ? ODBC_UTF8 : ODBC - @connection = + @unconfigured_connection = if @config.key?(:dsn) odbc_module.connect(@config[:dsn], @config[:username], @config[:password]) else odbc_module::Database.new.drvconnect(@config[:driver]) end - configure_time_options(@connection) + configure_time_options(@unconfigured_connection) super end alias reset! reconnect! @@ -133,7 +133,7 @@ def reconnect! # Disconnects from the database if already connected. Otherwise, this # method does nothing. def disconnect! - @connection.disconnect if @connection.connected? + @unconfigured_connection.disconnect if @unconfigured_connection&.connected? end # Build a new column object from the given options. Effectively the same diff --git a/lib/odbc_adapter/database_statements.rb b/lib/odbc_adapter/database_statements.rb index 1922dd1c..acbcda3b 100644 --- a/lib/odbc_adapter/database_statements.rb +++ b/lib/odbc_adapter/database_statements.rb @@ -10,9 +10,9 @@ module DatabaseStatements def execute(sql, name = nil, binds = []) log(sql, name) do if prepared_statements - @connection.do(prepare_statement_sub(sql), *prepared_binds(binds)) + @unconfigured_connection.do(prepare_statement_sub(sql), *prepared_binds(binds)) else - @connection.do(sql) + @unconfigured_connection.do(sql) end end end @@ -24,9 +24,9 @@ def exec_query(sql, name = 'SQL', binds = [], prepare: false) # rubocop:disable log(sql, name) do stmt = if prepared_statements - @connection.do(prepare_statement_sub(sql), *prepared_binds(binds)) + @unconfigured_connection.do(prepare_statement_sub(sql), *prepared_binds(binds)) else - @connection.run(sql) + @unconfigured_connection.run(sql) end columns = stmt.columns @@ -39,6 +39,8 @@ def exec_query(sql, name = 'SQL', binds = [], prepare: false) # rubocop:disable end end + alias internal_exec_query exec_query + # Executes delete +sql+ statement in the context of this connection using # +binds+ as the bind substitutes. +name+ is logged along with # the executed +sql+ statement. @@ -49,20 +51,20 @@ def exec_delete(sql, name, binds) # Begins the transaction (and turns off auto-committing). def begin_db_transaction - @connection.autocommit = false + @unconfigured_connection.autocommit = false end # Commits the transaction (and turns on auto-committing). def commit_db_transaction - @connection.commit - @connection.autocommit = true + @unconfigured_connection.commit + @unconfigured_connection.autocommit = true end # Rolls back the transaction (and turns on auto-committing). Must be # done if the transaction block raises an exception or returns false. def exec_rollback_db_transaction - @connection.rollback - @connection.autocommit = true + @unconfigured_connection.rollback + @unconfigured_connection.autocommit = true end # Returns the default sequence name for a table. diff --git a/lib/odbc_adapter/quoting.rb b/lib/odbc_adapter/quoting.rb index a499612e..a3bd0546 100644 --- a/lib/odbc_adapter/quoting.rb +++ b/lib/odbc_adapter/quoting.rb @@ -28,7 +28,7 @@ def quote_column_name(name) # sequence, but not all ODBC drivers support them. def quoted_date(value) if value.acts_like?(:time) - zone_conversion_method = ActiveRecord::Base.default_timezone == :utc ? :getutc : :getlocal + zone_conversion_method = ActiveRecord.default_timezone == :utc ? :getutc : :getlocal if value.respond_to?(zone_conversion_method) value = value.send(zone_conversion_method) diff --git a/lib/odbc_adapter/schema_statements.rb b/lib/odbc_adapter/schema_statements.rb index 3df30c9c..7cc99736 100644 --- a/lib/odbc_adapter/schema_statements.rb +++ b/lib/odbc_adapter/schema_statements.rb @@ -10,7 +10,7 @@ def native_database_types # Returns an array of table names, for database tables visible on the # current connection. def tables(_name = nil) - stmt = @connection.tables + stmt = @unconfigured_connection.tables result = stmt.fetch_all || [] stmt.drop @@ -28,7 +28,7 @@ def views # Returns an array of indexes for the given table. def indexes(table_name, _name = nil) - stmt = @connection.indexes(native_case(table_name.to_s)) + stmt = @unconfigured_connection.indexes(native_case(table_name.to_s)) result = stmt.fetch_all || [] stmt.drop unless stmt.nil? @@ -59,7 +59,7 @@ def indexes(table_name, _name = nil) # Returns an array of Column objects for the table specified by # +table_name+. def columns(table_name, _name = nil) - stmt = @connection.columns(native_case(table_name.to_s)) + stmt = @unconfigured_connection.columns(native_case(table_name.to_s)) result = stmt.fetch_all || [] stmt.drop @@ -91,14 +91,14 @@ def columns(table_name, _name = nil) # Returns just a table's primary key def primary_key(table_name) - stmt = @connection.primary_keys(native_case(table_name.to_s)) + stmt = @unconfigured_connection.primary_keys(native_case(table_name.to_s)) result = stmt.fetch_all || [] stmt.drop unless stmt.nil? result[0] && result[0][3] end def foreign_keys(table_name) - stmt = @connection.foreign_keys(native_case(table_name.to_s)) + stmt = @unconfigured_connection.foreign_keys(native_case(table_name.to_s)) result = stmt.fetch_all || [] stmt.drop unless stmt.nil? diff --git a/odbc_adapter.gemspec b/odbc_adapter.gemspec index 0eafa155..d56629c6 100644 --- a/odbc_adapter.gemspec +++ b/odbc_adapter.gemspec @@ -19,7 +19,7 @@ Gem::Specification.new do |spec| spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } spec.require_paths = ['lib'] - spec.add_dependency 'activerecord', '>= 5.0.1' + spec.add_dependency 'activerecord', '>= 7.1.3' spec.add_dependency 'ruby-odbc', '~> 0.9' spec.add_development_dependency 'bundler', '>= 1.14'