Class: ActiveRecord::ConnectionAdapters::ODBCAdapter

Inherits:
AbstractAdapter
  • Object
show all
Includes:
ODBCAdapter::DatabaseLimits, ODBCAdapter::DatabaseStatements, ODBCAdapter::Quoting, ODBCAdapter::SchemaStatements
Defined in:
lib/active_record/connection_adapters/odbc_adapter.rb

Constant Summary collapse

ADAPTER_NAME =
'ODBC'.freeze
BOOLEAN_TYPE =
'BOOLEAN'.freeze
ERR_DUPLICATE_KEY_VALUE =
23505

Constants included from ODBCAdapter::DatabaseStatements

ODBCAdapter::DatabaseStatements::SQL_NO_NULLS, ODBCAdapter::DatabaseStatements::SQL_NULLABLE, ODBCAdapter::DatabaseStatements::SQL_NULLABLE_UNKNOWN

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ODBCAdapter::SchemaStatements

#columns, #current_database, #index_name, #indexes, #native_database_types, #primary_key, #tables, #views

Methods included from ODBCAdapter::Quoting

#quote_column_name, #quote_string, #quoted_date

Methods included from ODBCAdapter::DatabaseStatements

#begin_db_transaction, #commit_db_transaction, #default_sequence_name, #exec_delete, #exec_query, #exec_rollback_db_transaction, #execute

Methods included from ODBCAdapter::DatabaseLimits

#table_alias_length

Constructor Details

#initialize(connection, logger, dbms) ⇒ ODBCAdapter

Returns a new instance of ODBCAdapter.



82
83
84
85
86
# File 'lib/active_record/connection_adapters/odbc_adapter.rb', line 82

def initialize(connection, logger, dbms)
  super(connection, logger)
  @connection = connection
  @dbms       = dbms
end

Instance Attribute Details

#dbmsObject (readonly)

Returns the value of attribute dbms.



80
81
82
# File 'lib/active_record/connection_adapters/odbc_adapter.rb', line 80

def dbms
  @dbms
end

Instance Method Details

#active?Boolean

Checks whether the connection to the database is still active. This includes checking whether the database is actually capable of responding, i.e. whether the connection isn’t stale.

Returns:

  • (Boolean)


105
106
107
# File 'lib/active_record/connection_adapters/odbc_adapter.rb', line 105

def active?
  @connection.connected?
end

#adapter_nameObject

Returns the human-readable name of the adapter. Use mixed case - one can always use downcase if needed.



90
91
92
# File 'lib/active_record/connection_adapters/odbc_adapter.rb', line 90

def adapter_name
  ADAPTER_NAME
end

#disconnect!Object

Disconnects from the database if already connected. Otherwise, this method does nothing.



125
126
127
# File 'lib/active_record/connection_adapters/odbc_adapter.rb', line 125

def disconnect!
  @connection.disconnect if @connection.connected?
end

#new_column(name, default, sql_type_metadata, null, table_name, default_function = nil, collation = nil, native_type = nil) ⇒ Object



129
130
131
# File 'lib/active_record/connection_adapters/odbc_adapter.rb', line 129

def new_column(name, default, , null, table_name, default_function = nil, collation = nil, native_type = nil)
  ::ODBCAdapter::Column.new(name, default, , null, table_name, default_function, collation, native_type)
end

#reconnect!Object Also known as: reset!

Disconnects from the database if already connected, and establishes a new connection with the database.



111
112
113
114
115
116
117
118
119
120
# File 'lib/active_record/connection_adapters/odbc_adapter.rb', line 111

def reconnect!
  disconnect!
  @connection =
    if options.key?(:dsn)
      ODBC.connect(options[:dsn], options[:username], options[:password])
    else
      ODBC::Database.new.drvconnect(options[:driver])
    end
  super
end

#supports_migrations?Boolean

Does this adapter support migrations? Backend specific, as the abstract adapter always returns false.

Returns:

  • (Boolean)


96
97
98
# File 'lib/active_record/connection_adapters/odbc_adapter.rb', line 96

def supports_migrations?
  true
end