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 177 def alter_table(name, generator=nil, &block) res = super reorg(name) res end
Create a new connection object for the given server.
# File lib/sequel/adapters/ibmdb.rb, line 184 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 the given SQL on the database.
# File lib/sequel/adapters/ibmdb.rb, line 202 def execute(sql, 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 the given SQL on the database, returning the last inserted identity value.
# File lib/sequel/adapters/ibmdb.rb, line 214 def execute_insert(sql, 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; stmt.free; i} end rescue Connection::Error => e raise_error(e) end
Execute a prepared statement named by name on the database.
# File lib/sequel/adapters/ibmdb.rb, line 228 def execute_prepared_statement(ps_name, opts) args = opts[:arguments] ps = prepared_statements[ps_name] sql = ps.prepared_sql synchronize(opts[:server]) do |conn| unless conn.prepared_statements.fetch(ps_name, []).first == sql log_yield("Preparing #{ps_name}: #{sql}"){conn.prepare(sql, ps_name)} end args = args.map{|v| v.nil? ? nil : prepared_statement_arg(v)} stmt = log_yield("Executing #{ps_name}: #{args.inspect}"){conn.execute_prepared(ps_name, *args)} if block_given? begin yield(stmt) ensure stmt.free end else stmt.affected end end end
Convert smallint type to boolean if convert_smallint_to_bool is true
# File lib/sequel/adapters/ibmdb.rb, line 252 def schema_column_type(db_type) if Sequel::IBMDB.convert_smallint_to_bool && db_type =~ /smallint/ :boolean else super end end
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 263 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
Generated with the Darkfish Rdoc Generator 2.