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
ERR_QUERY_TIMED_OUT =
57014
ERR_QUERY_TIMED_OUT_MESSAGE =
/Query has timed out/

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, #foreign_keys, #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, database_metadata) ⇒ ODBCAdapter

Returns a new instance of ODBCAdapter.



86
87
88
89
90
# File 'lib/active_record/connection_adapters/odbc_adapter.rb', line 86

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

Instance Attribute Details

#database_metadataObject (readonly)

Returns the value of attribute database_metadata.



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

def 
  @database_metadata
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)


109
110
111
# File 'lib/active_record/connection_adapters/odbc_adapter.rb', line 109

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.



94
95
96
# File 'lib/active_record/connection_adapters/odbc_adapter.rb', line 94

def adapter_name
  ADAPTER_NAME
end

#disconnect!Object

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



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

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



133
134
135
# File 'lib/active_record/connection_adapters/odbc_adapter.rb', line 133

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.



115
116
117
118
119
120
121
122
123
124
# File 'lib/active_record/connection_adapters/odbc_adapter.rb', line 115

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)


100
101
102
# File 'lib/active_record/connection_adapters/odbc_adapter.rb', line 100

def supports_migrations?
  true
end