Methods
Public Instance
Included modules
Attributes
conversion_procs | [R] |
Hash of connection procs for converting |
Public Instance methods
alter_table
(name, generator=nil)
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.
[show source]
# File lib/sequel/adapters/ibmdb.rb, line 188 def alter_table(name, generator=nil) res = super reorg(name) res end
connect
(server)
Create a new connection object for the given server.
[show source]
# File lib/sequel/adapters/ibmdb.rb, line 195 def connect(server) opts = server_opts(server) # use uncataloged connection so that host and port can be supported connection_string = ( 'Driver={IBM DB2 ODBC DRIVER};' "Database=#{opts[:database]};" "Hostname=#{opts[:host]};" "Port=#{opts[:port] || 50000};" 'Protocol=TCPIP;' "Uid=#{opts[:user]};" "Pwd=#{opts[:password]};" ) Connection.new(connection_string) end
execute
(sql, opts=OPTS, &block)
Execute the given SQL on the database.
[show source]
# 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)
Execute the given SQL on the database, returning the last inserted identity value.
[show source]
# 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)
Execute a prepared statement named by name on the database.
[show source]
# 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_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)
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.
[show source]
# File lib/sequel/adapters/ibmdb.rb, line 270 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