Class: ActiveRecord::ConnectionAdapters::RdbAdapter

Inherits:
AbstractAdapter
  • Object
show all
Includes:
ActiveRecord::ConnectionAdapters::Rdb::DatabaseLimits, ActiveRecord::ConnectionAdapters::Rdb::DatabaseStatements, ActiveRecord::ConnectionAdapters::Rdb::Quoting, ActiveRecord::ConnectionAdapters::Rdb::SchemaStatements
Defined in:
lib/active_record/connection_adapters/rdb_adapter.rb

Overview

:nodoc:

Constant Summary collapse

ADAPTER_NAME =
'rdb'.freeze
@@default_transaction_isolation =
:read_committed

Constants included from ActiveRecord::ConnectionAdapters::Rdb::Quoting

ActiveRecord::ConnectionAdapters::Rdb::Quoting::QUOTED_FALSE, ActiveRecord::ConnectionAdapters::Rdb::Quoting::QUOTED_POSITION, ActiveRecord::ConnectionAdapters::Rdb::Quoting::QUOTED_TRUE, ActiveRecord::ConnectionAdapters::Rdb::Quoting::QUOTED_VALUE

Instance Method Summary collapse

Methods included from ActiveRecord::ConnectionAdapters::Rdb::SchemaStatements

#add_column, after, #change_column, #change_column_default, #change_column_null, #columns, #create_schema_dumper, #create_sequence, #create_table, #drop_sequence, #drop_table, #drop_trigger, #index_exists?, #index_name, #index_name_exists?, #indexes, #native_database_types, #primary_key, #remove_column, #remove_column_for_alter, #remove_index, #remove_index!, #rename_column, #sequence_exists?, #tables, #trigger_exists?, #type_to_sql, #views

Methods included from ActiveRecord::ConnectionAdapters::Rdb::Quoting

#lookup_cast_type_from_column, #quote_column_name, #quote_string, #quote_table_name_for_assignment, #quoted_date, #quoted_false, #quoted_true, #type_cast_from_column, #type_casted_binds, #unquoted_false, #unquoted_true

Methods included from ActiveRecord::ConnectionAdapters::Rdb::DatabaseStatements

#begin_db_transaction, #begin_isolated_db_transaction, #commit_db_transaction, #default_sequence_name, #exec_query, #execute, #explain, #insert_fixtures_set, #last_inserted_id, #next_sequence_value, #reset_sequence!, #rollback_db_transaction, #transaction_isolation_levels

Methods included from ActiveRecord::ConnectionAdapters::Rdb::DatabaseLimits

#column_name_length, #in_clause_length, #index_name_length, #indexes_per_table, #sql_query_length, #table_alias_length, #table_name_length

Constructor Details

#initialize(connection, logger = nil, config = {}) ⇒ RdbAdapter

Returns a new instance of RdbAdapter.



32
33
34
35
36
37
38
39
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 32

def initialize(connection, logger = nil, config = {})
  super(connection, logger, config)
  # Our Responsibility

  @config = config
  @visitor = Arel::Visitors::Rdb.new self
  @prepared_statements = true
  @visitor.extend(DetermineIfPreparableVisitor)
end

Instance Method Details

#active?Boolean

Returns:

  • (Boolean)


93
94
95
96
97
98
99
100
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 93

def active?
  return false unless @connection.open?
  # return true if @connection.transaction_started

  @connection.query('SELECT 1 FROM RDB$DATABASE')
  true
rescue StandardError
  false
end

#adapter_nameObject



49
50
51
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 49

def adapter_name
  ADAPTER_NAME
end

#arel_visitorObject



41
42
43
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 41

def arel_visitor
  Arel::Visitors::Rdb.new self
end

#create_savepoint(name = current_savepoint_name) ⇒ Object



124
125
126
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 124

def create_savepoint(name = current_savepoint_name)
  execute("SAVEPOINT #{name}")
end

#disconnect!Object



107
108
109
110
111
112
113
114
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 107

def disconnect!
  super
  begin
    @connection.close
  rescue StandardError
    nil
  end
end

#ids_in_list_limitObject



85
86
87
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 85

def ids_in_list_limit
  1499
end

#prefetch_primary_key?(_table_name = nil) ⇒ Boolean

Returns:

  • (Boolean)


81
82
83
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 81

def prefetch_primary_key?(_table_name = nil)
  true
end

#reconnect!Object



102
103
104
105
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 102

def reconnect!
  disconnect!
  @connection = ::Fb::Database.connect(@config)
end

#release_savepoint(name = current_savepoint_name) ⇒ Object



132
133
134
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 132

def release_savepoint(name = current_savepoint_name)
  execute("RELEASE SAVEPOINT #{name}")
end

#requires_reloading?Boolean

Returns:

  • (Boolean)


120
121
122
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 120

def requires_reloading?
  false
end

#reset!Object



116
117
118
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 116

def reset!
  reconnect!
end

#rollback_to_savepoint(name = current_savepoint_name) ⇒ Object



128
129
130
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 128

def rollback_to_savepoint(name = current_savepoint_name)
  execute("ROLLBACK TO SAVEPOINT #{name}")
end

#schema_creationObject



53
54
55
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 53

def schema_creation
  Rdb::SchemaCreation.new self
end

#supports_count_distinct?Boolean

Returns:

  • (Boolean)


65
66
67
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 65

def supports_count_distinct?
  true
end

#supports_ddl_transactions?Boolean

Returns:

  • (Boolean)


69
70
71
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 69

def supports_ddl_transactions?
  true
end

#supports_migrations?Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 57

def supports_migrations?
  true
end

#supports_multi_insert?Boolean

Returns:

  • (Boolean)


89
90
91
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 89

def supports_multi_insert?
  false
end

#supports_primary_key?Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 61

def supports_primary_key?
  true
end

#supports_savepoints?Boolean

Returns:

  • (Boolean)


77
78
79
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 77

def supports_savepoints?
  true
end

#supports_transaction_isolation?Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 73

def supports_transaction_isolation?
  true
end

#valid_type?(type) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/active_record/connection_adapters/rdb_adapter.rb', line 45

def valid_type?(type)
  !native_database_types[type].nil? || !native_database_types[type.type].nil?
end