class Sequel::Firebird::Database

Constants

DISCONNECT_ERRORS
DatasetClass

Public Instance Methods

connect(server) click to toggle source
# File lib/sequel/adapters/firebird.rb, line 15
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 24
def disconnect_connection(conn)
  begin
    conn.close
  rescue Fb::Error
    nil
  end
end
execute(sql, opts=OPTS) { |r| ... } click to toggle source
# File lib/sequel/adapters/firebird.rb, line 32
def execute(sql, opts=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

adapter_initialize() click to toggle source

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

# File lib/sequel/adapters/firebird.rb, line 51
def adapter_initialize
  @primary_keys = {}
end
begin_transaction(conn, opts=OPTS) click to toggle source
# File lib/sequel/adapters/firebird.rb, line 55
def begin_transaction(conn, opts=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=OPTS) click to toggle source
# File lib/sequel/adapters/firebird.rb, line 66
def commit_transaction(conn, opts=OPTS)
  log_yield(TRANSACTION_COMMIT){conn.commit}
end
database_error_classes() click to toggle source
# File lib/sequel/adapters/firebird.rb, line 70
def database_error_classes
  [Fb::Error]
end
rollback_transaction(conn, opts=OPTS) click to toggle source
# File lib/sequel/adapters/firebird.rb, line 74
def rollback_transaction(conn, opts=OPTS)
  log_yield(TRANSACTION_ROLLBACK){conn.rollback}
end