Included Modules

Files

Class/Module Index [+]

Quicksearch

Sequel::IBMDB::Database

Attributes

conversion_procs[R]

Hash of connection procs for converting

Public Instance Methods

alter_table(name, generator=nil) click to toggle source

REORG the related table whenever it is altered. This is not always required, but it is necessary for compatibilty with other Sequel code in many cases.

# File lib/sequel/adapters/ibmdb.rb, line 192
def alter_table(name, generator=nil)
  res = super
  reorg(name)
  res
end
connect(server) click to toggle source

Create a new connection object for the given server.

# File lib/sequel/adapters/ibmdb.rb, line 199
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 220
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 232
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) click to toggle source

Execute a prepared statement named by name on the database.

# File lib/sequel/adapters/ibmdb.rb, line 246
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_yield("PREPARE #{ps_name}: #{sql}"){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_yield(log_sql, 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
table_exists?(name) click to toggle source

On DB2, a table might need to be REORGed if you are testing existence of it. This REORGs automatically if the database raises a specific error that indicates it should be REORGed.

# File lib/sequel/adapters/ibmdb.rb, line 277
def table_exists?(name)
  v ||= false # only retry once
  sch, table_name = schema_and_table(name)
  name = SQL::QualifiedIdentifier.new(sch, table_name) if sch
  from(name).first
  true
rescue DatabaseError => e
  if e.to_s =~ /Operation not allowed for reason code "7" on table/ && v == false
    # table probably needs reorg
    reorg(name)
    v = true
    retry 
  end
  false
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.