class Sequel::IBMDB::Database

Attributes

conversion_procs[R]

Hash of connection procs for converting

Public Instance Methods

connect(server) click to toggle source

Create a new connection object for the given server.

# File lib/sequel/adapters/ibmdb.rb, line 192
def connect(server)
  opts = server_opts(server)

  connection_params = if opts[:host].nil? && opts[:port].nil? && opts[:database]
    # use a cataloged connection
    opts.values_at(:database, :user, :password)
  else
    # use uncataloged connection so that host and port can be supported
    'Driver={IBM DB2 ODBC DRIVER};'            "Database=#{opts[:database]};"            "Hostname=#{opts[:host]};"            "Port=#{opts[:port] || 50000};"            'Protocol=TCPIP;'            "Uid=#{opts[:user]};"            "Pwd=#{opts[:password]};"          end 

  Connection.new(connection_params)
end
execute(sql, opts=OPTS, &block) click to toggle source

Execute the given SQL on the database.

# File lib/sequel/adapters/ibmdb.rb, line 213
def execute(sql, opts=OPTS, &block)
  if sql.is_a?(Symbol)
    execute_prepared_statement(sql, opts, &block)
  else
    synchronize(opts[:server]){|c| _execute(c, sql, opts, &block)}
  end
rescue Connection::Error => e
  raise_error(e)
end
execute_insert(sql, opts=OPTS) click to toggle source

Execute the given SQL on the database, returning the last inserted identity value.

# File lib/sequel/adapters/ibmdb.rb, line 225
def execute_insert(sql, opts=OPTS)
  synchronize(opts[:server]) do |c|
    if sql.is_a?(Symbol)
      execute_prepared_statement(sql, opts)
    else
      _execute(c, sql, opts)
    end
    _execute(c, "SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1", opts){|stmt| i = stmt.fetch_array.first.to_i; i}
  end
rescue Connection::Error => e
  raise_error(e)
end
execute_prepared_statement(ps_name, opts) { |stmt| ... } click to toggle source

Execute a prepared statement named by name on the database.

# File lib/sequel/adapters/ibmdb.rb, line 239
def execute_prepared_statement(ps_name, opts)
  args = opts[:arguments]
  ps = prepared_statement(ps_name)
  sql = ps.prepared_sql
  synchronize(opts[:server]) do |conn|
    unless conn.prepared_statements.fetch(ps_name, []).first == sql
      log_connection_yield("PREPARE #{ps_name}: #{sql}", conn){conn.prepare(sql, ps_name)}
    end
    args = args.map{|v| v.nil? ? nil : prepared_statement_arg(v)}
    log_sql = "EXECUTE #{ps_name}"
    if ps.log_sql
      log_sql += " ("
      log_sql << sql
      log_sql << ")"
    end
    begin
      stmt = log_connection_yield(log_sql, conn, args){conn.execute_prepared(ps_name, *args)}
      if block_given?
        yield(stmt)
      else  
        stmt.affected
      end
    ensure
      stmt.free_result if stmt
    end
  end
end
freeze() click to toggle source
# File lib/sequel/adapters/ibmdb.rb, line 267
def freeze
  @conversion_procs.freeze
  super
end