Methods
A
B
C
D
E
I
R
S
T
U
Instance Public methods
add_limit!(sql, options)

Alias for add_limit_offset!.

# File rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 83
def add_limit!(sql, options)
  add_limit_offset!(sql, options) if options
end
add_limit_offset!(sql, options)

Appends LIMIT and OFFSET options to a SQL statement. This method modifies the sql parameter.

Examples
add_limit_offset!('SELECT * FROM suppliers', {:limit => 10, :offset => 50})

generates

SELECT * FROM suppliers LIMIT 10 OFFSET 50
# File rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 93
def add_limit_offset!(sql, options)
  if limit = options[:limit]
    sql << " LIMIT #{limit}"
    if offset = options[:offset]
      sql << " OFFSET #{offset}"
    end
  end
end
add_lock!(sql, options)

Appends a locking clause to a SQL statement. *Modifies the sql parameter*.

# SELECT * FROM suppliers FOR UPDATE
add_lock! 'SELECT * FROM suppliers', :lock => true
add_lock! 'SELECT * FROM suppliers', :lock => ' FOR UPDATE'
# File rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 106
def add_lock!(sql, options)
  case lock = options[:lock]
    when true:   sql << ' FOR UPDATE'
    when String: sql << " #{lock}"
  end
end
begin_db_transaction()

Begins the transaction (and turns off auto-committing).

# File rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 73
def begin_db_transaction()    end
commit_db_transaction()

Commits the transaction (and turns on auto-committing).

# File rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 76
def commit_db_transaction()   end
default_sequence_name(table, column)
# File rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 113
def default_sequence_name(table, column)
  nil
end
delete(sql, name = nil)

Executes the delete statement and returns the number of rows affected.

# File rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 46
def delete(sql, name = nil)
  update(sql, name)
end
execute(sql, name = nil)

Executes the SQL statement in the context of this connection.

# File rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 31
def execute(sql, name = nil)
  raise NotImplementedError, "execute is an abstract method"
end
insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil)

Returns the last auto-generated ID from the affected table.

# File rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 36
def insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil)
  raise NotImplementedError, "insert is an abstract method"
end
reset_sequence!(table, column, sequence = nil)

Set the sequence to the max value of the table’s column.

# File rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 118
def reset_sequence!(table, column, sequence = nil)
  # Do nothing by default.  Implement for PostgreSQL, Oracle, ...
end
rollback_db_transaction()

Rolls back the transaction (and turns on auto-committing). Must be done if the transaction block raises an exception or returns false.

# File rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 80
def rollback_db_transaction() end
select_all(sql, name = nil)

Returns an array of record hashes with the column names as keys and column values as values.

# File rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 6
def select_all(sql, name = nil)
  select(sql, name)
end
select_one(sql, name = nil)

Returns a record hash with the column names as keys and column values as values.

# File rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 12
def select_one(sql, name = nil)
  result = select(sql, name)
  result.first if result
end
select_value(sql, name = nil)

Returns a single value from a record

# File rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 18
def select_value(sql, name = nil)
  result = select_one(sql, name)
  result.nil? ? nil : result.values.first
end
select_values(sql, name = nil)

Returns an array of the values of the first column in a select:

select_values("SELECT id FROM companies LIMIT 3") => [1,2,3]
# File rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 25
def select_values(sql, name = nil)
  result = select_all(sql, name)
  result.map{ |v| v.values.first }
end
transaction(start_db_transaction = true)

Wrap a block in a transaction. Returns result of block.

# File rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 51
def transaction(start_db_transaction = true)
  transaction_open = false
  begin
    if block_given?
      if start_db_transaction
        begin_db_transaction 
        transaction_open = true
      end
      yield
    end
  rescue Exception => database_transaction_rollback
    if transaction_open
      transaction_open = false
      rollback_db_transaction
    end
    raise
  end
ensure
  commit_db_transaction if transaction_open
end
update(sql, name = nil)

Executes the update statement and returns the number of rows affected.

# File rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 41
def update(sql, name = nil)
  execute(sql, name)
end
Instance Protected methods
select(sql, name = nil)

Returns an array of record hashes with the column names as keys and column values as values.

# File rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 125
def select(sql, name = nil)
  raise NotImplementedError, "select is an abstract method"
end