diff --git a/lib/active_record/connection_adapters/odbc_adapter.rb b/lib/active_record/connection_adapters/odbc_adapter.rb index 06686785..e9e9257b 100644 --- a/lib/active_record/connection_adapters/odbc_adapter.rb +++ b/lib/active_record/connection_adapters/odbc_adapter.rb @@ -1,5 +1,4 @@ require 'active_record' -require 'arel/visitors/bind_visitor' require 'odbc' require 'odbc_utf8' @@ -31,8 +30,8 @@ def odbc_connection(config) raise ArgumentError, 'No data source name (:dsn) or connection string (:conn_str) specified.' end - database_metadata = ::ODBCAdapter::DatabaseMetadata.new(connection, config[:encoding_bug]) - database_metadata.adapter_class.new(connection, logger, config, database_metadata) + database_metadata = ::ODBCAdapter::DatabaseMetadata.new(connection) + [connection, logger, config, database_metadata] end private @@ -86,10 +85,13 @@ class ODBCAdapter < AbstractAdapter # when a connection is first established. attr_reader :database_metadata - def initialize(connection, logger, config, database_metadata) + def initialize(connection) + connection, logger, config, database_metadata = ActiveRecord::Base.odbc_connection(connection) configure_time_options(connection) super(connection, logger, config) @database_metadata = database_metadata + @connection = connection + @raw_connection = connection end # Returns the human-readable name of the adapter. diff --git a/lib/odbc_adapter/adapters/mysql_odbc_adapter.rb b/lib/odbc_adapter/adapters/mysql_odbc_adapter.rb index eaa690ef..3a158504 100644 --- a/lib/odbc_adapter/adapters/mysql_odbc_adapter.rb +++ b/lib/odbc_adapter/adapters/mysql_odbc_adapter.rb @@ -6,7 +6,6 @@ class MySQLODBCAdapter < ActiveRecord::ConnectionAdapters::ODBCAdapter PRIMARY_KEY = 'INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY'.freeze class BindSubstitution < Arel::Visitors::MySQL - include Arel::Visitors::BindVisitor end def arel_visitor diff --git a/lib/odbc_adapter/adapters/null_odbc_adapter.rb b/lib/odbc_adapter/adapters/null_odbc_adapter.rb index 1a179905..e68e7faf 100644 --- a/lib/odbc_adapter/adapters/null_odbc_adapter.rb +++ b/lib/odbc_adapter/adapters/null_odbc_adapter.rb @@ -5,7 +5,6 @@ module Adapters # have an explicit adapter. class NullODBCAdapter < ActiveRecord::ConnectionAdapters::ODBCAdapter class BindSubstitution < Arel::Visitors::ToSql - include Arel::Visitors::BindVisitor end # Using a BindVisitor so that the SQL string gets substituted before it is diff --git a/lib/odbc_adapter/database_statements.rb b/lib/odbc_adapter/database_statements.rb index cac31682..14327837 100644 --- a/lib/odbc_adapter/database_statements.rb +++ b/lib/odbc_adapter/database_statements.rb @@ -17,6 +17,10 @@ def execute(sql, name = nil, binds = []) end end + def internal_exec_query(sql, name = "SQL", binds = [], prepare: false, async: false) # :nodoc: + exec_query(sql, name, binds, prepare: prepare) + end + # Executes +sql+ statement in the context of this connection using # +binds+ as the bind substitutes. +name+ is logged along with # the executed +sql+ statement.