class Sequel::Firebird::Database

Constants

DISCONNECT_ERRORS
DatasetClass

Public Class Methods

new(*args) click to toggle source

Add the primary_keys instance variables. so we can get the correct return values for inserted rows.

Calls superclass method Sequel::Database.new
# File lib/sequel/adapters/firebird.rb, line 17
def initialize(*args)
  super
  @primary_keys = {}
end

Public Instance Methods

connect(server) click to toggle source
# File lib/sequel/adapters/firebird.rb, line 22
def connect(server)
  opts = server_opts(server)

  Fb::Database.new(
    :database => "#{opts[:host]}:#{opts[:database]}",
    :username => opts[:user],
    :password => opts[:password]).connect
end
disconnect_connection(conn) click to toggle source
# File lib/sequel/adapters/firebird.rb, line 31
def disconnect_connection(conn)
  begin
    conn.close
  rescue Fb::Error
    nil
  end
end
execute(sql, opts={}) { |r| ... } click to toggle source
# File lib/sequel/adapters/firebird.rb, line 39
def execute(sql, opts={})
  begin
    synchronize(opts[:server]) do |conn|
      if conn.transaction_started && !_trans(conn)
        conn.rollback
        raise DatabaseDisconnectError, "transaction accidently left open, rolling back and disconnecting"
      end
      r = log_yield(sql){conn.execute(sql)}
      yield(r) if block_given?
      r
    end
  rescue Fb::Error => e
    raise_error(e, :disconnect=>DISCONNECT_ERRORS.match(e.message))
  end
end

Private Instance Methods

begin_transaction(conn, opts={}) click to toggle source
# File lib/sequel/adapters/firebird.rb, line 57
def begin_transaction(conn, opts={})
  log_yield(TRANSACTION_BEGIN) do
    begin
      conn.transaction
    rescue Fb::Error => e
      conn.rollback
      raise_error(e, :disconnect=>true) 
    end
  end
end
commit_transaction(conn, opts={}) click to toggle source
# File lib/sequel/adapters/firebird.rb, line 68
def commit_transaction(conn, opts={})
  log_yield(TRANSACTION_COMMIT){conn.commit}
end
database_error_classes() click to toggle source
# File lib/sequel/adapters/firebird.rb, line 72
def database_error_classes
  [Fb::Error]
end
rollback_transaction(conn, opts={}) click to toggle source
# File lib/sequel/adapters/firebird.rb, line 76
def rollback_transaction(conn, opts={})
  log_yield(TRANSACTION_ROLLBACK){conn.rollback}
end