class Sequel::Firebird::Database

  1. lib/sequel/adapters/firebird.rb
Parent: Firebird

Methods

Public Class

  1. new

Public Instance

  1. connect
  2. disconnect_connection
  3. execute

Constants

DISCONNECT_ERRORS = /Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements/  

Public Class methods

new (*args)

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

[show source]
# File lib/sequel/adapters/firebird.rb, line 17
def initialize(*args)
  super
  @primary_keys = {}
end

Public Instance methods

connect (server)
[show 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)
[show 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={})
[show 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