class Sequel::IBMDB::Database

  1. lib/sequel/adapters/ibmdb.rb
Superclass: Sequel::Database

Included modules

  1. Sequel::DB2::DatabaseMethods

Attributes

conversion_procs [R]

Hash of connection procs for converting

convert_smallint_to_bool [RW]

Whether to convert smallint values to bool for this Database instance

Public Instance methods

connect(server)

Create a new connection object for the given server.

[show source]
    # File lib/sequel/adapters/ibmdb.rb
189 def connect(server)
190   opts = server_opts(server)
191 
192   connection_params = if opts[:host].nil? && opts[:port].nil? && opts[:database]
193     # use a cataloged connection
194     opts.values_at(:database, :user, :password)
195   else
196     # use uncataloged connection so that host and port can be supported
197     'Driver={IBM DB2 ODBC DRIVER};' \
198     "Database=#{opts[:database]};" \
199     "Hostname=#{opts[:host]};" \
200     "Port=#{opts[:port] || 50000};" \
201     'Protocol=TCPIP;' \
202     "Uid=#{opts[:user]};" \
203     "Pwd=#{opts[:password]};" \
204   end 
205 
206   Connection.new(connection_params)
207 end
execute(sql, opts=OPTS, &block)
[show source]
    # File lib/sequel/adapters/ibmdb.rb
209 def execute(sql, opts=OPTS, &block)
210   if sql.is_a?(Symbol)
211     execute_prepared_statement(sql, opts, &block)
212   else
213     synchronize(opts[:server]){|c| _execute(c, sql, opts, &block)}
214   end
215 rescue Connection::Error => e
216   raise_error(e)
217 end
execute_insert(sql, opts=OPTS)
[show source]
    # File lib/sequel/adapters/ibmdb.rb
219 def execute_insert(sql, opts=OPTS)
220   synchronize(opts[:server]) do |c|
221     if sql.is_a?(Symbol)
222       execute_prepared_statement(sql, opts)
223     else
224       _execute(c, sql, opts)
225     end
226     _execute(c, "SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1", opts){|stmt| i = stmt.fetch_array.first.to_i; i}
227   end
228 rescue Connection::Error => e
229   raise_error(e)
230 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
233 def execute_prepared_statement(ps_name, opts)
234   args = opts[:arguments]
235   ps = prepared_statement(ps_name)
236   sql = ps.prepared_sql
237   synchronize(opts[:server]) do |conn|
238     unless conn.prepared_statements.fetch(ps_name, []).first == sql
239       log_connection_yield("PREPARE #{ps_name}: #{sql}", conn){conn.prepare(sql, ps_name)}
240     end
241     args = args.map{|v| v.nil? ? nil : prepared_statement_arg(v)}
242     log_sql = "EXECUTE #{ps_name}"
243     if ps.log_sql
244       log_sql += " ("
245       log_sql << sql
246       log_sql << ")"
247     end
248     begin
249       stmt = log_connection_yield(log_sql, conn, args){conn.execute_prepared(ps_name, *args)}
250       if defined?(yield)
251         yield(stmt)
252       else  
253         stmt.affected
254       end
255     ensure
256       stmt.free_result if stmt
257     end
258   end
259 end
freeze()
[show source]
    # File lib/sequel/adapters/ibmdb.rb
261 def freeze
262   @conversion_procs.freeze
263   super
264 end